Python:使用 MLPRegressor 拟合 3D 函数
Posted
技术标签:
【中文标题】Python:使用 MLPRegressor 拟合 3D 函数【英文标题】:Python: Fitting a 3D function using MLPRegressor 【发布时间】:2017-08-30 18:00:54 【问题描述】:我正在尝试使用 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)
上面的图应该是近似的。
红色就是它的作用。
代码如下:
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】:使用activation='tanh'
将激活函数更改为双曲tan 函数,使用solver='lbfgs'
将求解器更改为lbfgs。
如果您的分类器实例如下所示,则红色和蓝色的图应该几乎相同:
classifier = neural_network.MLPRegressor(hidden_layer_sizes=(200, 200), solver='lbfgs', activation='tanh', learning_rate='adaptive')
【讨论】:
以上是关于Python:使用 MLPRegressor 拟合 3D 函数的主要内容,如果未能解决你的问题,请参考以下文章
sklearn MLPRegressor 的 TensorFlow 副本产生其他结果
使用 GridsearchCV 为管道中的最佳模型提取 MLPRegressor 属性 (n_iter_)?