【问题标题】:AttributeError: 'MLPClassifier' object has no attribute 'best_loss_'AttributeError:“MLPClassifier”对象没有属性“best_loss_”
【发布时间】:2020-04-23 16:28:01
【问题描述】:

我在 scikit-learn 的 MLPClassifier 中试验了 warm_start 参数。但是,我在运行以下代码时收到错误消息。

    clf = MLPClassifier(solver='adam',
                        hidden_layer_sizes=(128, 128),
                        activation='relu',
                        max_iter = 3,
                        verbose=True,
                        tol= 1e-100,
                        n_iter_no_change=10,
                        early_stopping=True,
                        warm_start=True)

    clf.fit(df_feat, df_label)
    clf.fit(df_feat, df_label)

以下是我的输出和错误消息。第一个 clf.fit() 能够运行完成,但第二个 clf.fit() 在 1 次迭代后产生了错误消息。

Iteration 1, loss = 1.84596208
Validation score: 0.610841
Iteration 2, loss = 1.04435735
Validation score: 0.731758
Iteration 3, loss = 0.84135025
Validation score: 0.760945
C:\Users\LHongRu1\Anaconda3\envs\py36\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py:571: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (3) reached and th
e optimization hasn't converged yet.
  % self.max_iter, ConvergenceWarning)
Iteration 4, loss = 0.77392135
Traceback (most recent call last):
  File "train_3(to_experiment).py", line 70, in <module>
    main()
  File "train_3(to_experiment).py", line 62, in main
    clf.fit(df_feat, df_label)
  File "C:\Users\LHongRu1\Anaconda3\envs\py36\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py", line 995, in fit
    hasattr(self, "classes_")))
  File "C:\Users\LHongRu1\Anaconda3\envs\py36\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py", line 370, in _fit
    intercept_grads, layer_units, incremental)
  File "C:\Users\LHongRu1\Anaconda3\envs\py36\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py", line 540, in _fit_stochastic
    self._update_no_improvement_count(early_stopping, X_val, y_val)
  File "C:\Users\LHongRu1\Anaconda3\envs\py36\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py", line 604, in _update_no_improvement_count
    if self.loss_curve_[-1] > self.best_loss_ - self.tol:
AttributeError: 'MLPClassifier' object has no attribute 'best_loss_'

如果我更改为warm_start = False,则两个 clf.fit() 都可以运行完成。

【问题讨论】:

  • 您的意思是,第一个 clf.fit 使用 ConvergenceWarning 完成(3 次迭代),第二个 clf.fit 产生错误?
  • @desertnaut 是的。为了清楚起见,我已经编辑了帖子。
  • 您找到解决方案了吗?我有同样的问题

标签: python machine-learning scikit-learn attributeerror mlp


【解决方案1】:

试试early_stopping=False,它对我有用。解决问题。

【讨论】:

    猜你喜欢
    • 2021-08-01
    • 2020-07-23
    • 2012-12-01
    • 2021-04-19
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多