我想使用以下代码绘制loss_curve:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor
def 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中,我在编码时出现了这种方法。
我能试着解决这个问题吗?
发布于 2020-10-04 04:27:37
在拟合之后,只有stochastic solvers会在估计器上公开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求解器。
https://stackoverflow.com/questions/64187854
复制相似问题