W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
在這個例子中,我們來創(chuàng)建一個單層神經網絡,它由獨立的神經元組成,這些神經元在輸入數據上起作用以產生輸出。 請注意,這里使用 neural_simple.txt
文件作為輸入。
如下所示導入所需的軟件包 -
import numpy as np
import matplotlib.pyplot as plt
import neurolab as nl
加載數據集如下代碼 -
input_data = np.loadtxt(“/Users/admin/neural_simple.txt')
以下是我們要使用的數據。 請注意,在此數據中,前兩列是特征,最后兩列是標簽。
array([[2. , 4. , 0. , 0. ],
[1.5, 3.9, 0. , 0. ],
[2.2, 4.1, 0. , 0. ],
[1.9, 4.7, 0. , 0. ],
[5.4, 2.2, 0. , 1. ],
[4.3, 7.1, 0. , 1. ],
[5.8, 4.9, 0. , 1. ],
[6.5, 3.2, 0. , 1. ],
[3. , 2. , 1. , 0. ],
[2.5, 0.5, 1. , 0. ],
[3.5, 2.1, 1. , 0. ],
[2.9, 0.3, 1. , 0. ],
[6.5, 8.3, 1. , 1. ],
[3.2, 6.2, 1. , 1. ],
[4.9, 7.8, 1. , 1. ],
[2.1, 4.8, 1. , 1. ]])
現在,將這四列分成2個數據列和2個標簽 -
data = input_data[:, 0:2]
labels = input_data[:, 2:]
使用以下命令繪制輸入數據 -
plt.figure()
plt.scatter(data[:,0], data[:,1])
plt.xlabel('Dimension 1')
plt.ylabel('Dimension 2')
plt.title('Input data')
現在,為每個維度定義最小值和最大值,如下所示 -
dim1_min, dim1_max = data[:,0].min(), data[:,0].max()
dim2_min, dim2_max = data[:,1].min(), data[:,1].max()
接下來,如下定義輸出層中神經元的數量 -
nn_output_layer = labels.shape[1]
現在,定義一個單層神經網絡 -
dim1 = [dim1_min, dim1_max]
dim2 = [dim2_min, dim2_max]
neural_net = nl.net.newp([dim1, dim2], nn_output_layer)
訓練神經網絡的時代數和學習率如下所示 -
error = neural_net.train(data, labels, epochs = 200, show = 20, lr = 0.01)
現在,使用以下命令可視化并繪制訓練進度 -
plt.figure()
plt.plot(error)
plt.xlabel('Number of epochs')
plt.ylabel('Training error')
plt.title('Training error progress')
plt.grid()
plt.show()
現在,使用上述分類器中的測試數據點 -
print('\nTest Results:')
data_test = [[1.5, 3.2], [3.6, 1.7], [3.6, 5.7],[1.6, 3.9]] for item in data_test:
print(item, '-->', neural_net.sim([item])[0])
下面是測試結果 -
[1.5, 3.2] --> [1. 0.]
[3.6, 1.7] --> [1. 0.]
[3.6, 5.7] --> [1. 1.]
[1.6, 3.9] --> [1. 0.]
您可以看到迄今為止討論的代碼的輸出圖表 -
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: