Python:使用MLPRegressor安装3D功能

时间:2017-04-05 08:26:43

标签: python machine-learning scikit-learn neural-network regression

我试图使用MLPRegressor来适应预定义的3D功能。问题在于我无法打印出正确的结果,因此在绘制时我的拟合看起来很糟糕。

以下功能:

def threeDFunc(xin,yin):
    z = np.zeros((40,40))
    for xIndex in range(0,40,1):
        for yIndex in range(0,40,1):
            z[xIndex,yIndex]=(np.exp(-(xin[xIndex]**2+yin[yIndex]**2)/0.1))
    return z



xThD = np.arange(-1,1,0.05)
yThD = np.arange(-1,1,0.05)
zThD = threeDFunc(xThD, yThD)

3Dplot

以上情节应该是近似的。

3Dplot with approximation

红色就是它的作用。

代码如下所示:

classifier = neural_network.MLPRegressor(hidden_layer_sizes=(200, 200), activation='logistic', learning_rate='adaptive')

xy = np.array((xThD.flatten(),yThD.flatten()))

classifier.fit(np.transpose(xy), zThD)

pre = classifier.predict(np.transpose(xy))

import pylab
from mpl_toolkits.mplot3d import Axes3D

fig = pylab.figure()
ax = Axes3D(fig)
X, Y = np.meshgrid(xThD, yThD)
ax.plot_wireframe(X, Y, zThD)
ax.plot_wireframe(X, Y, pre, color='red')
print(np.shape(zThD))
print(np.shape(pre))
plt.show()

1 个答案:

答案 0 :(得分:0)

使用activation='tanh'将激活函数更改为双曲线tan函数,并使用solver='lbfgs'将解算器更改为lbfgs。

如果你的分类器实例化如下所示,红色和蓝色的图应该几乎相同:

classifier = neural_network.MLPRegressor(hidden_layer_sizes=(200, 200), solver='lbfgs', activation='tanh', learning_rate='adaptive')