MLPRegressor 主要用来做回归,现在来测试一下用模拟数据做回归模型的效果。
这里导入了 sklearn.neural_network 中的 MLPRegressor 回归模块。下面的测试并没有使用 sklearn 中的数据集,而使用模拟的数据。
In [1]: import numpy as np
...: import matplotlib.pyplot as plt
...: from sklearn.neural_network import MLPRegressor
这里生成的是从 -3.14 到 3.14 区间里平均分割的 400 个点。
In [2]: X = np.linspace(-3.14, 3.14, 400)
将 X 转换为一个一维的数组。
In [3]: X1 = X.reshape(-1,1)
In [4]: y = np.sin(X) + 0.3*np.random.rand(len(X))
In [5]: clf = MLPRegressor(alpha=1e-6,hidden_layer_sizes=(3, 2), random_state=1, max_iter=100000,activation='logistic') # 创建模型对象
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)
In [7]: y2 = clf.predict(X1) # 做出预测曲线
结果如图 1 所示。
In [8]: plt.scatter(X,y)#画图
...: plt.plot(X,y2,c="red")
Out[8]: [<matplotlib.lines.Line2D at 0xaefeeb8>]
我们还可以尝试用不同的激活函数得到不同的结果,如图 2 和图 3 所示。