AI人工智能 单层神经网络

2026-02-27 11:57 更新

在这个示例中,我们将创建一个单层神经网络,它由独立的神经元组成,这些神经元作用于输入数据以产生输出。请注意,我们使用名为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.]

您可以看到以下图表,作为到目前为止讨论的代码的输出:

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号