日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【Python-ML】感知器学习算法(perceptron)

發(fā)布時(shí)間:2025/4/16 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python-ML】感知器学习算法(perceptron) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、數(shù)學(xué)模型

?

2、權(quán)值訓(xùn)練

?

3Python代碼

?

感知器收斂的前提是兩個(gè)類別必須是線性可分的,且學(xué)習(xí)速率足夠小。如果兩個(gè)類別無法通過一個(gè)線性決策邊界進(jìn)行劃分,要為模型在訓(xùn)練集上的學(xué)習(xí)迭代次數(shù)設(shè)置一個(gè)最大值,或者設(shè)置一個(gè)允許錯(cuò)誤分類樣本數(shù)量的閾值,否則感知器訓(xùn)練算法將永遠(yuǎn)不停地更新權(quán)值。

?

# -*- coding: utf-8 -*- ''' Created on 2017年12月15日 @author: Jason.F @summary: 感知器學(xué)習(xí)算法 ''' import numpy as np import time import matplotlib.pyplot as plt import pandas as pd class perceptron(object):''' Perceptron classifier.Parameterseta:float=Learning rate (between 0.0 and 1.0)n_iter:int=Passes over the training dataset.Attributesw_:ld-array=weights after fitting.errors_:list=Number of misclassifications in every epoch.'''def __init__(self,eta=0.01,n_iter=10):self.eta=etaself.n_iter=n_iterdef fit(self,X,y):'''Fit training data.ParametersX:{array-like},shape=[n_samples,n_features]Training vectors,where n_samples is the number of the samples and n_features is the number of features.y:array-like,shape=[n_samples]Target values.Returnsself:object'''self.w_=np.zeros(1+X.shape[1])self.errors_=[]for _ in range(self.n_iter):errors=0for xi , target in zip(X,y):update=self.eta * (target - self.predict(xi))self.w_[1:]+=update *xiself.w_[0]+=updateerrors += int (update !=0.0)self.errors_.append(errors)return selfdef net_input(self,X):'''Calculate net input'''return np.dot(X, self.w_[1:])+self.w_[0]def predict(self,X):'''Return class label after unit step'''return np.where(self.net_input(X) >=0.0,1,-1)if __name__ == "__main__": start = time.clock() train =pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',header=None)ppn = perceptron(eta=0.01,n_iter=10)X_train = train.drop([4], axis=1)X_train=X_train.values #dataframe convert to arrayy_train = train[4].valuesy_train=np.where(y_train == 'Iris-setosa',-1,1)ppn.fit(X_train,y_train)#預(yù)測print (ppn.predict([6.9,3.0,5.1,1.8]))#繪制錯(cuò)誤分類樣本數(shù)量plt.plot(range(1,len(ppn.errors_)+1),ppn.errors_,marker='o')plt.xlabel('Epochs')plt.ylabel('Number of misclassifications')plt.show()end = time.clock() print('finish all in %s' % str(end - start))

代碼中用UCI機(jī)器學(xué)習(xí)庫中的數(shù)據(jù)集做試驗(yàn)。可設(shè)置不同的學(xué)習(xí)速率eta和迭代次數(shù)n_iter觀察收斂情況。


總結(jié)

以上是生活随笔為你收集整理的【Python-ML】感知器学习算法(perceptron)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。