-
panda數(shù)據(jù)分析庫(kù) df?=?pd.read_csv(file?,?header?=?None) df.head(10)?讀取10行 df.loc[0:100?,?4].values?讀取0到100行的第四列數(shù)據(jù) iloc主要使用數(shù)字來(lái)索引數(shù)據(jù),而不能使用字符型的標(biāo)簽來(lái)索引數(shù)據(jù) 而loc則剛好相反,只能使用字符型標(biāo)簽來(lái)索引數(shù)據(jù),不能使用數(shù)字 來(lái)索引數(shù)據(jù) plt.scatter繪制散點(diǎn)圖 plt.scatter(X[:50?,?0]?,?X[:50?,?1]?,?color='red'?,?marker='o') 前50列數(shù)據(jù),x軸為0列,y軸為1列數(shù)據(jù),畫(huà)出的點(diǎn)為紅圈
查看全部 -
?X:[???[1,2,3]?,?[4,5,6]???] ?y:[????????1????,????-1???????] ?zip(X,y)?=?[[1,2,3,?1?]?,?[4,5,6?,?-1]] ? ?np.zero?向量全賦零操作 ?np.dot(X?,?y)??點(diǎn)積??w_[1:]權(quán)重w從1到最后 ?np.where(x>0?,?true?,?false)?等價(jià)于冒號(hào)表達(dá)式
查看全部 -
X?=?np.array X:shape[n_samples?,?n_features] X:[?[1?,?2?,?3]?,?[4?,?5?,?6]?] n_samples?:?2??n_features?:?3 X.shape[1]就是X的n_samples值,值為2。
查看全部 -
和方差求偏導(dǎo)
查看全部 -
import numpy as np
class perceptron(object):
? ? '''
? ? eta:學(xué)習(xí)率
? ? n_iter:權(quán)重向量的訓(xùn)練次數(shù)
? ? w_:神經(jīng)分叉權(quán)重向量 ?w處理輸入x
? ? errors_:用于記錄神經(jīng)元判斷出錯(cuò)次數(shù)
? ? '''
? ? def _int_(self,eat=0.01,n_iter=10):
? ? ? ? self.eat=eat;
? ? ? ? self.n_iter=n_iter;
? ? ? ? pass
? ? def fit(self,X,y):
? ? ? ? """
? ? ? ? 輸入訓(xùn)練數(shù)據(jù),培訓(xùn)神經(jīng)元,X是輸入的訓(xùn)練樣本,y是對(duì)樣本的正確分類(lèi)
? ? ? ? X:shape[n_samples,n_features]
? ? ? ? n_samples:幾組數(shù)據(jù)。n_features:有多少個(gè)神經(jīng)分叉。
? ? ? ? X[[1,2,3],[4,5,6]]?
? ? ? ? n_samples:2
? ? ? ? n_features:3
? ? ? ? y:[1,-1]
? ? ? ??
? ? ? ? """
? ? ? ? '''
? ? ? ? 初始化權(quán)重向量為0
? ? ? ? w_:是一個(gè)一位數(shù)組,代表每個(gè)神經(jīng)纖維的權(quán)重向量
? ? ? ? X.shape[1]:在計(jì)算有幾個(gè)神經(jīng)纖維
? ? ? ? 加一是因?yàn)榍懊嫠惴ㄌ岬降膚0,也就是步調(diào)函數(shù)的閾值
? ? ? ? 開(kāi)始的時(shí)候閾值 ?塞它=w0 用w0保存
? ? ? ? '''
? ? ? ? self.w_=np.zero(1+X.shape[1]);
? ? ? ? self.errors=[];
? ? ? ? for _ in range(self.n_iter):
? ? ? ? ? ? error=0;
? ? ? ? ? ? '''
? ? ? ? ? ? X[[1,2,3],[4,5,6]]
? ? ? ? ? ? y:[1,-1]
? ? ? ? ? ? zip(X,y)=[[1,2,3,1],[4,5,6,-1]]
? ? ? ? ? ??
? ? ? ? ? ? '''
? ? ? ? ? ? for xi,target in zip(X,y):
? ? ? ? ? ? ? ? '''
? ? ? ? ? ? ? ? target:每組數(shù)據(jù),一個(gè)個(gè)神經(jīng)元 判斷的正確值標(biāo)準(zhǔn)值
? ? ? ? ? ? ? ? update=學(xué)習(xí)率*(y-y')
? ? ? ? ? ? ? ? '''
? ? ? ? ? ? ? ? update=self.eta*(target-self.predict(xi))
? ? ? ? ? ? ? ? '''
? ? ? ? ? ? ? ? predict:函數(shù),是用來(lái)根據(jù)每個(gè)神經(jīng)元輸入的一組數(shù)據(jù)得到自己判斷的結(jié)果
? ? ? ? ? ? ? ? xi 是一個(gè)向量
? ? ? ? ? ? ? ? update*xi等價(jià):
? ? ? ? ? ? ? ? [的它w(1)=x[1]*update,的它w(2)=x[2]*update,的它w(3)=x[3]*update,]
? ? ? ? ? ? ? ? '''
? ? ? ? ? ? ? ? self.w_[1:] +=update*xi
? ? ? ? ? ? ? ? self.w_[0] +=update;
? ? ? ? ? ??
? ? ? ? ? ??
? ? ? ? ? ??
? ? ? ? ? ? ? ? errors += int(update != 0.0)
? ? ? ? ? ? ? ? self.errors_append(errors) ??
? ? ? ? ? ? ? ? pass
? ? ??
? ? ? ? ? ? pass
? ? ? ? def net_input(self,x):
? ? ? ? ? ? '''
? ? ? ? ? ? 完成神經(jīng)元對(duì)輸入信號(hào)的處理(加權(quán)點(diǎn)乘)
? ? ? ? ? ? '''
? ? ? ? ? ? return np.dot(X ?, self.w_[1:] + self.w_[0])
? ? ? ? ? ? pass
? ? ? ? def predict(self,x):
? ? ? ? ? ? ? ? ? ? ? ? ? '''
? ? ? ? ? ? ? ? ? ? ? ? ? 加權(quán)點(diǎn)乘后用于與閾值判斷
? ? ? ? ? ? ? ? ? ? ? ? ? '''
? ? ? ? ? ? return np.where(self.net_input(X) >= 0.0 , 1 , -1)
? ? ? ? ? ? pass
? ? ? ??
? ? ? ? pass
查看全部 -
對(duì)人類(lèi)智商和尊嚴(yán)進(jìn)行全面的碾壓...
查看全部 -
感知器數(shù)據(jù)分類(lèi)算法步驟
查看全部 -
file="" import?pandas?as?pd import?matplotlib.pyplot??as?plt import?numpy?as?np df=pd.read_cvs(flie,header=none)//文件第一行即數(shù)據(jù)第一行 y=df.loc[0:100,4].values//讀取數(shù)據(jù),將0-100行數(shù)據(jù)的第四列,作為輸出y(vector) y=np.where(y=="",1,-1)//將輸出字符串轉(zhuǎn)化成數(shù)字 x=df.loc[0:100,[0,2]].values//第0列和第2列作為輸入抽取出來(lái) plt.scatter(x[:50,0],x[:50,1],color='red',marker='o',label="xxx") plt.scatter(x[50:100,0],x[50:100,1],color='blue',marker='x',label="yyy") plt.xlabel('lll') plt.ylabel('mmm') plt.legend(loc='upper?left')//設(shè)置圖例屬性 plt.show()
查看全部 -
感知器算法 試用范圍:
Linearly separable 線(xiàn)性可分割 √
Not linearly separable? 線(xiàn)性不可分割的 ×
查看全部 -
閾值的更新
????閾值
????????一開(kāi)始是 根據(jù)我們的經(jīng)驗(yàn),設(shè)定一個(gè)值
????????這個(gè)值再后續(xù)中要不斷的更新。
????????就是 w0 的更新。沒(méi)有x0可以乘。
θ = -w0?
wo = w0 + dw0
dw0 = η * e(y)
查看全部 -
權(quán)重更新算法:
wj = wj + dwj
dwj = η * (y - y^) * xj
? ? ? ?=?η * e(y) * xj?
η:學(xué)習(xí)率,是[0, 1]間的一個(gè)小數(shù)。
????需要模型的設(shè)計(jì)者自己去設(shè)定。模型自己訓(xùn)練中不斷地調(diào)整權(quán)重w的取值。然鵝,不同的學(xué)習(xí)率η,有可能會(huì)影響到最后的模型學(xué)習(xí)效果。
查看全部 -
步調(diào)函數(shù) & 閾值
z* = z - theta? (????)
z* ><? 2* theta
查看全部 -
感知器 數(shù)據(jù)分類(lèi)算法 步驟:
把權(quán)重向量w初始化為0(或[0, 1]間任意小數(shù));
把訓(xùn)練樣本輸入感知器,得到分類(lèi)結(jié)果(-1, 或1);
根據(jù)分類(lèi)結(jié)果更新權(quán)重向量w 。
整個(gè)機(jī)器學(xué)習(xí)的目的,就是 通過(guò)輸入的訓(xùn)練樣本,反復(fù)去更新權(quán)重向量w,直到權(quán)重向量更新到一定程度之后,我們的整個(gè)模型才能有效地對(duì)未知輸入做出有效的分類(lèi)和預(yù)測(cè)。
查看全部 -
123查看全部
-
老師沒(méi)有把代碼貼出來(lái),光看老師講映像不夠深刻,還是要自己動(dòng)手。同學(xué)把自己整理的代碼貼出來(lái)給大家看看:
查看全部
舉報(bào)