AI人工智能 单层神经网络
在这个示例中,我们将创建一个单层神经网络,它由独立的神经元组成,这些神经元作用于输入数据以产生输出。请注意,我们使用名为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('维度1')
plt.ylabel('维度2')
plt.title('输入数据')
现在,定义每个维度的最小值和最大值,如下所示:
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('迭代次数')
plt.ylabel('训练误差')
plt.title('训练误差进度')
plt.grid()
plt.show()
现在,在上述分类器中使用测试数据点:
print('\n测试结果:')
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.]
您可以看到以下图表,作为到目前为止讨论的代码的输出:

