python機器學習之神經網絡(一)
python有專門的神經網絡庫,但為了加深印象,我自己在numpy庫的基礎上,自己編寫了一個簡單的神經網絡程序,是基于Rosenblatt感知器的,這個感知器建立在一個線性神經元之上,神經元模型的求和節(jié)點計算作用于突觸輸入的線性組合,同時結合外部作用的偏置,對若干個突觸的輸入求和后進行調節(jié)。為了便于觀察,這里的數(shù)據采用二維數(shù)據。
目標函數(shù)是訓練結果的誤差的平方和,由于目標函數(shù)是一個二次函數(shù),只存在一個全局極小值,所以采用梯度下降法的策略尋找目標函數(shù)的最小值。
代碼如下:
import numpy as np import pylab as pl b=1 #偏置 a=0.3 #學習率 x=np.array([[b,1,3],[b,2,3],[b,1,8],[b,2,15],[b,3,7],[b,4,29],[b,4,8],[b,4,20]]) #訓練數(shù)據 d=np.array([1,1,-1,-1,1,-1,1,-1]) #訓練數(shù)據類別 w=np.array([b,0,0]) #初始w def sgn(v): if v>=0: return 1 else: return -1 def comy(myw,myx): return sgn(np.dot(myw.T,myx)) def neww(oldw,myd,myx,a): return oldw+a*(myd-comy(oldw,myx))*myx for ii in range(5): #迭代次數(shù) i=0 for xn in x: w=neww(w,d[i],xn,a) i+=1 print w myx=x[:,1] #繪制訓練數(shù)據 myy=x[:,2] pl.subplot(111) x_max=np.max(myx)+15 x_min=np.min(myx)-5 y_max=np.max(myy)+50 y_min=np.min(myy)-5 pl.xlabel(u"x") pl.xlim(x_min,x_max) pl.ylabel(u"y") pl.ylim(y_min,y_max) for i in range(0,len(d)): if d[i]==1: pl.plot(myx[i],myy[i],'r*') else: pl.plot(myx[i],myy[i],'ro') #繪制測試點 test=np.array([b,9,19]) if comy(w,test)>0: pl.plot(test[1],test[2],'b*') else: pl.plot(test[1],test[2],'bo') test=np.array([b,9,64]) if comy(w,test)>0: pl.plot(test[1],test[2],'b*') else: pl.plot(test[1],test[2],'bo') test=np.array([b,9,16]) if comy(w,test)>0: pl.plot(test[1],test[2],'b*') else: pl.plot(test[1],test[2],'bo') test=np.array([b,9,60]) if comy(w,test)>0: pl.plot(test[1],test[2],'b*') else: pl.plot(test[1],test[2],'bo') #繪制分類線 testx=np.array(range(0,20)) testy=testx*2+1.68 pl.plot(testx,testy,'g--') pl.show() for xn in x: print "%d %d => %d" %(xn[1],xn[2],comy(w,xn))
圖中紅色是訓練數(shù)據,藍色是測試數(shù)據,圓點代表類別-1.星點代表類別1。由圖可知,對于線性可分的數(shù)據集,Rosenblatt感知器的分類效果還是不錯的。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
在PyCharm中找不到Conda創(chuàng)建的環(huán)境的解決方法
本文主要介紹了在PyCharm中找不到Conda創(chuàng)建的環(huán)境的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07TensorFlow教程Softmax邏輯回歸識別手寫數(shù)字MNIST數(shù)據集
這篇文章主要為大家介紹了python神經網絡的TensorFlow教程基于Softmax邏輯回歸識別手寫數(shù)字的MNIST數(shù)據集示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11使用python/pytorch讀取數(shù)據集的示例代碼
這篇文章主要為大家詳細介紹了使用python/pytorch讀取數(shù)據集的示例,文中的示例代碼講解詳細,具有一定參考價值,感興趣的小伙伴可以跟隨小編一起學習一下2023-12-12