python - 具有属性 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 中,我在编码时会出现这种方法。
我可以尝试什么来解决这个问题?
解决方案
只有随机求解器会在拟合后在估计器上公开一个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 求解器。
推荐阅读
- java - 从@Configuration 访问 server.servlet.context-path
- reactjs - How to add css class and css module on one item?
- python - Anaconda Navigator vs Anaconda Prompt:如何执行文件
- android - I used navigation in my app,How can I launch a Fragment for which I get a result when it finished?
- sql - 对存储过程的给定数据集进行分组
- r - 在ggplot2中添加新geom作为新行,防止绘图分层
- amazon-web-services - 无服务器 Web 应用程序的建议数据迁移
- ios - 接收推送通知时如何在后台振动长达 30 秒的 iOS 设备
- jquery - 从 HTML 元素结构创建嵌套的 JSON 对象
- c# - 如何在 wpf 导航中为主窗口及其导航页面创建相同的中心