神经网络算法的实例
1.簡單非線性關系數據集測試(XOR)
X: ? ? ? ? ? ? ? ? ?Y 0 0 ? ? ? ? ? ? ? ? 0 0 1 ? ? ? ? ? ? ? ? 1 1 0 ? ? ? ? ? ? ? ? 1 1 1 ? ? ? ? ? ? ? ? 0
Code: ?#!/usr/bin/env python #-*-coding:utf-8-*- #神經網絡測試的例子 #簡單非線性關系數據集測試(XOR)異或的運算 from NeuralNetwork import NeuralNetwork import numpy as npnn=NeuralNetwork([2,2,1],'tanh') #算法集 X=np.array([[0,0],[0,1],[1,0],[1,1]])y=np.array([0,1,1,0]) nn.fit(X,y) for i in [[0,0],[0,1],[1,0],[1,1]]:print(i,nn.predict(i))
結果解釋: 0,0代表預測值為0.0022接近于0
實例2:手寫數字識別 每個圖片8*8 識別數字:0 1 2 3 4 5 6 7 8 9?
code? #!/usr/bin/env python #-*-coding:utf-8-*- #手寫數字的識別 神經網絡算法,利用寫好的神經網絡算法測試 import numpy as np from sklearn.datasets import load_digits from sklearn.metrics import confusion_matrix,classification_report from sklearn.preprocessing import LabelBinarizer from NeuralNetwork import NeuralNetwork from sklearn.cross_validation import train_test_splitdigits=load_digits() X=digits.data y=digits.target #特征值 0 1之間 X-=X.min() X/=X.max() #歸一化nn=NeuralNetwork([64,100,10],'logistic') X_train,X_test,y_train,y_test=train_test_split(X,y) labels_train=LabelBinarizer().fit_transform(y_train) labels_test=LabelBinarizer().fit_transform(y_test) #轉化為01, print('start fitting') nn.fit(X_train,labels_train,epochs=3000) predictions=[] for i in range(X_test.shape[0]):o=nn.predict(X_test[i])predictions.append(np.argmax(o)) # print(confusion_matrix(y_test,predictions)) #正確度 print(classification_report(y_test,predictions))
結果解釋: ? 對角線上的值代表預測對的值,39代表0預測對了39次 第一行第四個數5個1代表預測錯了4預測成了0
X: ? ? ? ? ? ? ? ? ?Y 0 0 ? ? ? ? ? ? ? ? 0 0 1 ? ? ? ? ? ? ? ? 1 1 0 ? ? ? ? ? ? ? ? 1 1 1 ? ? ? ? ? ? ? ? 0
Code: ?#!/usr/bin/env python #-*-coding:utf-8-*- #神經網絡測試的例子 #簡單非線性關系數據集測試(XOR)異或的運算 from NeuralNetwork import NeuralNetwork import numpy as npnn=NeuralNetwork([2,2,1],'tanh') #算法集 X=np.array([[0,0],[0,1],[1,0],[1,1]])y=np.array([0,1,1,0]) nn.fit(X,y) for i in [[0,0],[0,1],[1,0],[1,1]]:print(i,nn.predict(i))
結果解釋: 0,0代表預測值為0.0022接近于0
實例2:手寫數字識別 每個圖片8*8 識別數字:0 1 2 3 4 5 6 7 8 9?
code? #!/usr/bin/env python #-*-coding:utf-8-*- #手寫數字的識別 神經網絡算法,利用寫好的神經網絡算法測試 import numpy as np from sklearn.datasets import load_digits from sklearn.metrics import confusion_matrix,classification_report from sklearn.preprocessing import LabelBinarizer from NeuralNetwork import NeuralNetwork from sklearn.cross_validation import train_test_splitdigits=load_digits() X=digits.data y=digits.target #特征值 0 1之間 X-=X.min() X/=X.max() #歸一化nn=NeuralNetwork([64,100,10],'logistic') X_train,X_test,y_train,y_test=train_test_split(X,y) labels_train=LabelBinarizer().fit_transform(y_train) labels_test=LabelBinarizer().fit_transform(y_test) #轉化為01, print('start fitting') nn.fit(X_train,labels_train,epochs=3000) predictions=[] for i in range(X_test.shape[0]):o=nn.predict(X_test[i])predictions.append(np.argmax(o)) # print(confusion_matrix(y_test,predictions)) #正確度 print(classification_report(y_test,predictions))
結果解釋: ? 對角線上的值代表預測對的值,39代表0預測對了39次 第一行第四個數5個1代表預測錯了4預測成了0
總結
- 上一篇: Java集合框架-重构设计
- 下一篇: 题目1335:闯迷宫( BFS在求解最短