【问题标题】:Fixing TypeError in Sklearn Model修复 Sklearn 模型中的 TypeError
【发布时间】:2019-07-12 06:27:22
【问题描述】:

我已经多次使用sklearnlinear_model.Ridge()。但是,这次我在拟合模型时遇到了这个错误:

TypeError: ufunc 'subtract' output (typecode 'O') could not be coerced to provided output parameter (typecode 'd') according to the casting rule ''same_kind''

我认为该错误与 sample_weights 数据类型有关。下面是我的代码。

X = df[['X']]
Y = df[['Y']]
weights = df[['Wgt']]
weights = weights.values
weights = weights.ravel()
lr_rg = linear_model.Ridge(alpha=2700)
lr_rg.fit(X, Y, sample_weight=weights)

权重设置有问题吗?我之前为模型做过类似的设置,从来没有遇到过任何麻烦。在没有sample_weights 的情况下拟合模型效果很好。

我查看了这个question,但不知道如何将其应用于我的问题。任何帮助将不胜感激。

【问题讨论】:

  • 你能提供一个可重现的例子吗?权重是什么样的?
  • @MaximeKan 权重只是一个 numpy 数组。 XY 都是 pandas 数据帧。linear_model.Ridge() 的文档调用这些数据类型,所以我对类型错误感到困惑。

标签: python pandas numpy scikit-learn typeerror


【解决方案1】:

我发现答案是,当 sklearn 模型需要 int64 时,weights numpy 数组在过程中的某处获得了数据类型 object。因此,我在构建模型之前添加了以下代码行:

weights = weights.astype(np.64)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 2018-08-06
    • 2021-06-17
    • 2019-02-22
    • 2019-10-23
    相关资源
    最近更新 更多