具有属性 loss_curve_ 的 MLPRegressor 问题

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


我可以尝试什么来解决这个问题?


摇曳的蔷薇
浏览 103回答 1
1回答

繁花不似锦

只有随机求解器loss_curve_才会在拟合后在估计器上公开属性,因此在第一次迭代中,lbfgs求解器会失败。您可以通过以下方式验证这一点:from sklearn.datasets import make_classificationfrom sklearn.neural_network import MLPRegressorX, 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_"))FalseTrueTrue如果您想访问此属性,您需要坚持使用 adam 或 sgd 求解器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python