-
class?AdalineGD(object): ????def?__init__(self,?eta,?n_iter): ????????self.eta?=?eta ????????self.n_iter?=?n_iter ????def?fit(self,?X,?y): ????????self.w_?=?np.zeros(1?+?X.shape[1]) ????????self.cost_?[] ????????for?i?in?range(self.n_iter): ????????????output?=?self.net_input(X) ????????????errors?=?y?-?output ????????????self.w_[1:]?+=?self.eta?*?X.T.dot(errors) ????????????self.w_[0]?+=?self.eta?*?errors.sum() ????????????cost?=?(errors?**?2).sum()?/?2.0 ????????????self.cost_.append(cost) ????????return?self ????def?net_input(self,?X): ????????return?np.dot(X,?self.w_[1:])?+?self.w_[0] ????def?activation(self,?X): ????????return?self.net_input(X) ????def?predict(self,?X): ????????return?np.where(self.activation(X)?>=?0,?1,?-1)
查看全部 -
η是前面提到的學(xué)習(xí)率,μ=-η。
查看全部 -
倒數(shù)第三行,求和符號(hào)下面的是j,不是i。
查看全部 -
對(duì)w求偏導(dǎo),會(huì)得到一條切線的斜率k,當(dāng)在U形圖左半部的時(shí)候,k<0,增大w的值,在在右半部的時(shí)候,k>0,減小w的值,就會(huì)找到J(w)的最小值。
查看全部 -
不斷調(diào)整w0-wm,使得J(w)的值最小,對(duì)神經(jīng)元的訓(xùn)練效果才最好。
查看全部 -
感知器的激活函數(shù)是步調(diào)函數(shù),輸入值大于給定的閾值輸出1,小于輸出0。自適應(yīng)線性神經(jīng)元激活函數(shù)是1*w0+x1*w1+... 點(diǎn)積求和的計(jì)算結(jié)果與正確的結(jié)果比較
查看全部 -
from?matplotlib.colors?import?ListedColormap def?plot_decision_region(X,?y,?classifier,?resolution=0.02): ????marker?=?('s',?'x',?'o',?'v') ????colors?=?('red',?'blue',?'lightgreen',?'gray',?'cyan') ????cmap?=?ListColormap(colors[:len(np.unique(y))]) ???? ????x1_min,?x1_max?=?X[:,?0].min()?-?1,?X[:,?0].max() ????x2_min,?x2_max?=?X[:,?1].min()?-?1,?X[:,?1].max() ???? ????#?將np.arange()中的向量擴(kuò)展成一個(gè)矩陣 ????''' ????xx1: ????a?=?np.arange(x1_min,?x1_max,?resolution)?向量元素為185個(gè) ????xx1[255,?185],將a中的元素作為一行,重復(fù)255行 ????xx2: ????b?=?np.arange(x2_min,?x2_max,?resolution)?向量元素為255個(gè) ????xx2[255,?185],將b中的元素作為一列,重復(fù)185列 ????''' ????xx1,?xx2?=?np.mesbgrid(np.arange(x1_min,?x1_max,?resolution), ???????????????????????????np.arrange(x2_min,?x2_max,?resolution))
查看全部 -
file?=?"iris.csv" import?pandas?as?pd?#?數(shù)據(jù)讀取類(lèi)庫(kù) #?header指定文件是否有表頭 df?=?pd.read_csv(file,?header?=?None) #?顯示文件前十行 df,head(10) import?matplotlib.pyplot?as?plt import?numpy?as?np #?得到數(shù)據(jù)前一百行的第五列 y?=?df.loc[0:100,?4].values print(y) #?將字符串轉(zhuǎn)化為數(shù)字 y?=?np.where(y?==?'Iris-setosa',?-1,?1) #?抽取數(shù)據(jù)第0列和第2列 x?=?df,iloc[0:100,?[0,?2]].values #?scatter散列點(diǎn)繪圖 plt.scatter(x[:50,?0],?x[:50,?1],?color='red',?marker='o',?label='setosa') plt.scatter(x[50:100,?0],?x[50:100,?1],?color='blue',?marker='x',?label='versicolor') plt.xlabel('花瓣長(zhǎng)度') plt.ylabel('花莖長(zhǎng)度') plt.legend(loc='upper?left') plt.show()
查看全部 -
import?numpy?as?np class?Perceptron(object): ????def?__init__(self,?eta?=?0.01,?n_iter?=?10): ????????self.eta?=?eta ????????self.n_iter?=?n_iter ????def?fit(self,?X,?y): ????????self.w_?=?np.zero(1?+?X.shape[1]) ????????self.error_?=?[] ????????for?_?in?range(self.n_iter): ????????????errors?=?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): ????????????????''' ????????????????update?=?n?*?(y?-?y') ????????????????''' ????????????????update?=?self.eta?*?(target?-?self.predict(xi)) ????????????????''' ????????????????xi是一個(gè)向量 ????????????????update?*?xi等價(jià)于 ????????????????[w1?=?x1*update,?w2?=?x2*update,?......] ????????????????''' ????????????????self.w_[1:]?+=?update?*?xi ????????????????self.w_[0]?+=?update ????????????????errors?+=?int(update?!=?0.0) ????????????????self.errors_.append(errors) ????????def?net_input(self,?X): ????????????''' ????????????z?=?w0*1?+?w1*x1?+?w2*x2?+..... ????????????np.dot()是做點(diǎn)積 ????????????''' ????????????return?np.dot(X,?self.w_[1:])?+?self.w_[0] ????????def?predict(self,?X): ????????????return?np.where(self.net_input(X)?>=?0.0,?1,?-1)
查看全部 -
import?numpy?as?np class?Perceptron(object): ????''' ????eta:學(xué)習(xí)率 ????n_iter:權(quán)重向量的訓(xùn)練次數(shù) ????w_:神經(jīng)分叉權(quán)重向量 ????errors_:用于記錄神經(jīng)元判斷出錯(cuò)次數(shù) ????''' ????def?__init__(self,?eta?=?0.01,?n_iter?=?10); ????????self.eta?=?eta ????????self,n_iter?=?n_iter ????def?fit(self,?X,?y): ????????''' ????????輸入訓(xùn)練數(shù)據(jù),培訓(xùn)神經(jīng)元 ????????X是輸入樣本向量,y是對(duì)應(yīng)的樣本分類(lèi) ????????X:shape[n_samples,?n_features] ????????X:[[1,?2,?3],?[4,?5,?6]] ????????n_samples:?2 ????????n_features:?3 ????????y:[1,?-1] ????????''' ????????#初始化權(quán)重向量為0,加1是因?yàn)樘岬降膚0,即步調(diào)函數(shù)的閾值 ????????self.w_?=?np.zero(1?+?X.shape[1]) ????????self.errora_?=?[]
查看全部 -
適用范圍:預(yù)測(cè)的數(shù)據(jù)是可以進(jìn)行線性分割的
感知器的隱含層是點(diǎn)積求和函數(shù)
查看全部 -
閾值也是需要更新的查看全部
-
權(quán)重更新算法
學(xué)習(xí)率是訓(xùn)練者人為設(shè)置的
查看全部 -
右側(cè)的關(guān)于z的函數(shù)就是感知器
查看全部 -
感知器數(shù)據(jù)分類(lèi)算法步驟
查看全部
舉報(bào)