python - 更新 scikit-learn:“SVC”对象没有属性“_probA”?
问题描述
我们更新到 Python 3.8.2 并且 scikit-learn 出现错误:
Traceback (most recent call last):
File "manage.py", line 16, in <module>
execute_from_command_line(sys.argv)
File "/home/ubuntu/myWebApp/.venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/home/ubuntu/myWebApp/.venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ubuntu/myWebApp/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 316, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/ubuntu/myWebApp/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 353, in execute
output = self.handle(*args, **options)
File "/home/ubuntu/myWebApp/server_modules/rss_ml_score/management/commands/rssmlscore.py", line 22, in handle
run.build_and_predict(days=options['days'], rescore=options['rescore'])
File "/home/ubuntu/myWebApp/server_modules/rss_ml_score/utils/run.py", line 96, in build_and_predict
predict_all(filename)
File "/home/ubuntu/myWebApp/server_modules/rss_ml_score/models/predict_model.py", line 135, in predict_all
voting_predicted_hard, voting_predicted_soft = predict_from_multiple_estimator(fitted_estimators, X_predict_list,
File "/home/ubuntu/myWebApp/server_modules/rss_ml_score/models/train_model.py", line 66, in predict_from_multiple_estimator
pred_prob1 = np.asarray([clf.predict_proba(X)
File "/home/ubuntu/myWebApp/server_modules/rss_ml_score/models/train_model.py", line 66, in <listcomp>
pred_prob1 = np.asarray([clf.predict_proba(X)
File "/home/ubuntu/myWebApp/.venv/lib/python3.8/site-packages/sklearn/svm/_base.py", line 662, in _predict_proba
if self.probA_.size == 0 or self.probB_.size == 0:
File "/home/ubuntu/myWebApp/.venv/lib/python3.8/site-packages/sklearn/svm/_base.py", line 759, in probA_
return self._probA
AttributeError: 'SVC' object has no attribute '_probA'
除了 sci-kit learn 访问 _probA 之外,我还需要使用其他库吗?
更新以回应评论:
引发错误的代码行是:
pred_prob1 = np.asarray([clf.predict_proba(X)
for clf, X in zip(estimators, X_list)])
...在以下位置调用此行_base.py
:
def _predict_proba(self, X):
X = self._validate_for_predict(X)
if self.probA_.size == 0 or self.probB_.size == 0:
...调用这条线,也在_base.py
:
@property
def probA_(self):
return self._probA
...引发错误:
AttributeError:“SVC”对象没有属性“_probA”
所有这一切都运行了好几个月,但目前无法正常工作,即使在更新到最新版本后也是如此scikit-learn.
解决方案
事实证明,我必须使用与用于训练我们目前拥有的模型的相同版本的 sci-kit (scikit-learn==0.21.2)。更高版本的 scikit 不适用于我们现有的代码/模型。如果我们想升级 scikit,我们必须用新版本的 scikit 重新训练我们的模型。
推荐阅读
- vue.js - Vuetify v-tabs 长时间切换标签
- azure - Azure 数据工厂 Rest API 分页问题
- bazel - Bazel 编译有很多不同的目标,哪些是坏的?
- postgresql - 我正在尝试使用 lpad SQL 函数,但它抛出 lpad(text) 不存在
- java - Java 打印值列表
- windows - Doom Emacs 在 Windows 10 上启动缓慢并闪烁
- swift - 添加 APNSSwift 依赖项。但它不工作
- php - 如何避免在 Symfony Messenger 中处理来自“子”类的消息?
- python - noobie 遍历列表以显示系列
- json - 使用 JSON Parser 提取 JSON 属性 - Coin Market Cap API