人工神经网络(ANN)——python代码及示例

数据结构如下所示:

(年份是我随便写的,实际应该是1990-2012,在代码画图时可以用到)

人工神经网络(ANN)——python代码及示例_第1张图片

将excel表处理成如下形式(预测指标放在最后一列),然后将excel数据另存为txt形式,可以在python中引用。

人工神经网络(ANN)——python代码及示例_第2张图片

 首先确保环境下有安装sklearn、numpy、pylab库,安装方法:

pip install +库名

其中安装sklearn库前需要安装numpy、scipy、matplotlib库。

然后就可以使用以下代码:

from sklearn.neural_network import MLPRegressor
import numpy as np
import pylab as plt

a = np.loadtxt('神经网络预测案例.txt')
x0 = a[:,:5]; y0 = a[:,5]  #提出训练样本数据
m1 = x0.max(axis=0); m2 = x0.min(axis=0)  #计算逐列最大值和最小值
bx0 = 2*(x0-m2)/(m1-m2)-1  #数据标准化
#构造并拟合模型
md = MLPRegressor(solver='lbfgs',activation='identity',
     hidden_layer_sizes=10).fit(bx0, y0)
x = np.array([[399759.5,472115],[296916,317987],[201722.1,236402],[156998.4,183918.6],[278121.85,311485.13]]).T #预测年份的非预测数据
bx = 2*(x-m2) / (m1-m2)-1  #数据标准化
yh = md.predict(bx); print('预测值为:,',np.round(yh,6))
yh0 = md.predict(bx0); delta = abs(yh0-y0)/y0*100
print('已知数据预测的相对误差:', np.round(delta,6))
t = np.arange(1990, 2012)
plt.rc('font', size=15); plt.rc('font', family='SimHei')
plt.plot(t, y0, '--o', label='原始数据')
plt.plot(t, yh0, '-*', label='预测数据')
plt.xticks(t, rotation=55); plt.legend(); plt.show()

构建模型的核心语句:

md = MLPRegressor(solver='lbfgs',activation='identity',hidden_layer_sizes=10).fit(bx0, y0)

其中,solver参数可选“lbfgs(优化器,小样本适用)、sgd(随机梯度下降)、adam(默认,大样本适用)”

输出结果如下:

人工神经网络(ANN)——python代码及示例_第3张图片

人工神经网络(ANN)——python代码及示例_第4张图片

你可能感兴趣的:(python,python,机器学习,开发语言)