【问题标题】:AttributeError: 'SimpleImputer' object has no attribute '_validate_data' in PyCaretAttributeError:“SimpleImputer”对象在 PyCaret 中没有属性“_validate_data”
【发布时间】:2020-11-25 20:58:04
【问题描述】:

我正在使用 PyCaret,但出现错误。

AttributeError: 'SimpleImputer' object has no attribute '_validate_data'

尝试创建一个基本实例。

# Create a basic PyCaret instance
import pycaret
from pycaret.regression import *
mlb_pycaret = setup(data = pycaret_df, target = 'pts', train_size = 0.8, numeric_features = ['home', 
'first_time_pitcher'], session_id = 123)

我所有的变量都是数字的(我强制了其中的两个,它们是布尔值)。我的目标变量是label,这是默认值。

我也安装了PyCaret,导入了它的regression,重新安装了scikit learn,导入了SimpleImputerfrom sklearn.impute import SimpleImputer

OBP_avg Numeric
SLG_avg Numeric
SB_avg  Numeric
RBI_avg Numeric
R_avg   Numeric
home    Numeric
first_time_pitcher  Numeric
park_ratio_OBP  Numeric
park_ratio_SLG  Numeric
SO_avg_p    Numeric
pts_500_parkadj_p   Numeric
pts_500_parkadj Numeric
SLG_avg_parkadj Numeric
OPS_avg_parkadj Numeric
SLG_avg_parkadj_p   Numeric
OPS_avg_parkadj_p   Numeric
pts_BxP Numeric
SLG_BxP Numeric
OPS_BxP Numeric
whip_SO_BxP Numeric
whip_SO_B   Numeric
whip_SO_B_parkadj   Numeric
order   Numeric
ops x pts_500 order15   Numeric
ops x pts_500 parkadj   Numeric
ops23 x pts_500 Numeric
ops x pts_500 orderadj  Numeric
whip_p  Numeric
whip_SO_p   Numeric
whip_SO_parkadj_p   Numeric
whip_parkadj_p  Numeric
pts Label

我的回溯如下:

【问题讨论】:

  • 为什么要先导入pycaret,环境使用的是什么版本的scikit-learn?您是否尝试过跳过numeric_features 参数?试试numeric_iterative_imputernumeric_imputation 参数怎么样?
  • @MarkMoretto,我试图跳过numeric_features。它没有帮助。我有同样的错误,但有更长的回溯。我故意在代码上方导入pycaret 及其回归,因为过去的顺序也很重要。如果我跳过数字特征,home 将被视为分类变量,并且第二个变量根本没有类。我不确定为什么ptslabel,因为我没有做分类(也许没问题)。您提到的参数在 PyCaret 的 clustering 中,我不确定它在这里会有所帮助。
  • @MarkMoretto,我删除了一半具有高相关性的变量,一切都很完美。发生了什么?没有线索。
  • 甜蜜!我很好奇这是否是版本问题,因为我的安装也没有该功能。但是,我很高兴听到您成功了!
  • sklearn 版本可能错误。现在应该是 0.23.2 而不是 0.24 (6/2021)。

标签: python scikit-learn pycaret


【解决方案1】:

这里的问题在于插补。 pycaret documentation 的默认值是“简单”,但在这种情况下,您需要设置 imputation_type='iterative' 才能使其工作。

【讨论】:

  • 这可行,但也可能是您的 sklearn 版本错误。从 6/2021 开始,它应该是 0.23.2 版本,而不是 0.24 版本。此时使用 0.24 会导致同样的错误。
  • 我像你说的那样改变了,但现在我遇到了另一个问题:ModuleNotFoundError: No module named 'sklearn.kernel_ridge'
【解决方案2】:

库不兼容,重新安装pycaret:pip install pycaret pandas shap

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 2020-10-04
  • 2020-10-29
  • 2020-10-25
  • 2022-11-18
相关资源
最近更新 更多