属性loss_curve_的MLP除法器问题



我想使用以下代码绘制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版本中,当我进行编码时,它会出现这种方法。

我该怎么解决这个问题?

只有随机解算器在拟合后才会在估计器上暴露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解算器。

最新更新