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('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.]
您可以看到迄今为止讨论的代码的输出图表 -