我想使用以下代碼繪制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 回答

繁花不似錦
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
提交
取消