我想使用以下代码绘制loss_curve:import pandas as pdimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn.neural_network import MLPRegressordef plotCurves(Xtrain,ytrain,Xval,yval): solver=["lbfgs", "sgd", "adam"] for i in solver: mlp=MLPRegressor(activation='relu',max_iter=1000,solver=i) mlp.fit(Xtrain,ytrain) pred=mlp.predict(Xval) print (mlp.score(Xval,yval)) pd.DataFrame(mlp.loss_curve_).plot()但是,当我运行我的代码时,出现以下错误:'MLPRegressor' object has no attribute 'loss_curve_'在Anaconda IDE 1.9.7版本中,当我编码时会出现这种方法。我可以尝试什么来解决这个问题?
1 回答
![?](http://img1.sycdn.imooc.com/54584f3100019e9702200220-100-100.jpg)
繁花不似锦
TA贡献1851条经验 获得超4个赞
只有随机求解器loss_curve_
才会在拟合后在估计器上公开属性,因此在第一次迭代中,lbfgs
求解器会失败。您可以通过以下方式验证这一点:
from sklearn.datasets import make_classification
from sklearn.neural_network import MLPRegressor
X, y = make_classification(n_samples=5)
solver=[
"lbfgs",
"sgd",
"adam"
]
for i in solver:
mlp = MLPRegressor(activation='relu',solver=i)
mlp.fit(X,y)
print(hasattr(mlp, "loss_curve_"))
False
True
True
如果您想访问此属性,您需要坚持使用 adam 或 sgd 求解器。
添加回答
举报
0/150
提交
取消