首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >attribute loss_curve_的MLPRegressor问题

attribute loss_curve_的MLPRegressor问题
EN

Stack Overflow用户
提问于 2020-10-04 02:53:04
回答 1查看 323关注 0票数 0

我想使用以下代码绘制loss_curve:

代码语言:javascript
复制
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()

但是,当我运行我的代码时,出现以下错误:

代码语言:javascript
复制
'MLPRegressor' object has no attribute 'loss_curve_'

在Anaconda IDE版本1.9.7中,我在编码时出现了这种方法。

我能试着解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-04 04:27:37

在拟合之后,只有stochastic solvers会在估计器上公开loss_curve_属性,因此在第一次迭代中,使用lbfgs求解器会失败。您可以使用以下内容验证这一点:

代码语言:javascript
复制
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求解器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64187854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档