codecamp

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.]

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

AI人工智能 基于感知器的分类器
AI人工智能 多层神经网络
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

AI人工智能监督学习(回归)

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }