首页 > 编程笔记

神经网络算法实战:MLPRegressor回归

MLPRegressor 主要用来做回归,现在来测试一下用模拟数据做回归模型的效果。

1) 导入必要的模块

这里导入了 sklearn.neural_network 中的 MLPRegressor 回归模块。下面的测试并没有使用 sklearn 中的数据集,而使用模拟的数据。
In [1]: import numpy as np
   ...: import matplotlib.pyplot as plt
   ...: from sklearn.neural_network import MLPRegressor

2) 生成模拟的自变量数据集

这里生成的是从 -3.14 到 3.14 区间里平均分割的 400 个点。

In [2]: X = np.linspace(-3.14, 3.14, 400)

3)转换数据类型

将 X 转换为一个一维的数组。

In [3]: X1 = X.reshape(-1,1)

4) 生成模拟的目标变量数据

In [4]: y = np.sin(X) + 0.3*np.random.rand(len(X))

5) 初始化模型对象

In [5]: clf = MLPRegressor(alpha=1e-6,hidden_layer_sizes=(3, 2), random_state=1, max_iter=100000,activation='logistic')  # 创建模型对象

6) 训练模型对象

In [6]: clf.fit(X1, y)  # 训练模型
Out[6]: 
MLPRegressor(activation='logistic', alpha=1e-06, batch_size='auto',
       beta_1=0.9, beta_2=0.999, early_stopping=False, epsilon=1e-08,
       hidden_layer_sizes=(3, 2), learning_rate='constant',
       learning_rate_init=0.001, max_iter=100000, momentum=0.9,
       nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
       solver='adam', tol=0.0001, validation_fraction=0.1, verbose=False,
       warm_start=False)

7) 预测

In [7]: y2 = clf.predict(X1) # 做出预测曲线

8) 画出预测结果

结果如图 1 所示。
In [8]: plt.scatter(X,y)#画图
   ...: plt.plot(X,y2,c="red")
Out[8]: [<matplotlib.lines.Line2D at 0xaefeeb8>]

回归神经网络结果
图1:回归神经网络结果
 
我们还可以尝试用不同的激活函数得到不同的结果,如图 2 和图 3 所示。

ReLU函数结果
图2:ReLU 函数结果
 
tanh函数结果
图3:tanh 函数结果

优秀文章