【问题标题】:sklearn::TypeError: Wrong type for parameter `n_values`. Expected 'auto', int or array of ints, got <type 'numpy.ndarray'>sklearn::TypeError:参数“n_values”的类型错误。预期的“自动”、整数或整数数组,得到 <type 'numpy.ndarray'>
【发布时间】:2017-11-30 07:13:36
【问题描述】:

我在初始化 OneHotEncoder 时传入了一个硬编码列表/元组(两者都试过),我在 fit_transform 期间收到此错误,没有在任何地方使用 numpy 类型(除了数据矩阵本身)。

唯一的问题是该数组中的某些值是None,因为我还使用categorical_features 来指定掩码(因为某些特征是实值的,我希望它们保持真实-值得。

我的 n_values 看起来像 [1, 2, 3, None, 5](1, 2, 3, None, 5)

我的categorical_features 看起来像[0, 1, 2, 4] 虽然我也尝试过:

[True, True, True, False, True].

该文档没有提供任何戴上面具的实际示例。

编辑:

所以,我尝试用零替换 None,这个问题消失了,但现在我明白了:

ValueError: Shape mismatch: if n_values is an array, it has to be of shape (n_features,).

无论我是否用np.array 包装我的mask 数组(当我这样做时,形状确实与(n_features,) 相同)我得到了同样的错误(尽管有趣的是它并没有抱怨它是一个@只要其中没有 None 值,就不再是 987654337@ 数组。

【问题讨论】:

  • 在文档中,它指出n_values is Number of values per feature. 每个功能可以取多少值。为什么是None
  • 您应该发布完整的代码以及一些示例和完整的堆栈跟踪错误。
  • @mkaran 假设您的功能是[color, age, country]。然后你想要一个热门的colorcountry 值而不是年龄。我尝试了不同的方法,例如[7, None, 180][7, 0, 180],但事实证明[7, 180] 是正确的方法。该文档没有给出任何存在非分类变量的示例。

标签: python arrays numpy scikit-learn


【解决方案1】:

n_values 应该只包含分类值的域大小,完全跳过数据矩阵中的非分类列。

因此,如果使用[True, False, True] 格式,则大小应与数组​​中True 值的数量相对应,或者如果使用索引,则两个数组的大小应相同。

因此,None 数组中不应有 None 值,但也不应使用 0、-1 或任何其他方式对实值变量进行编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多