【问题标题】:Scikit-learn fit_transform return type not homogeneousScikit-learn fit_transform 返回类型不齐
【发布时间】:2018-03-10 00:00:08
【问题描述】:

我目前正在使用 sklearn,但有些事情困扰着我。 Imputer.fit_transform()LabelEncoder.fit_transform等的返回类型是numpy.ndarray,但OneHotEncoder.fit_transform()返回一个coo_matrix。 有解释吗?

谢谢。

【问题讨论】:

  • 请发布您的代码

标签: python machine-learning scikit-learn


【解决方案1】:

Imputer 适用于现有的数据数组。所以输出将取决于 fit() 的输入。如果输入稀疏,则输出很可能是稀疏的。

LabelEncoder 只是将字符串值更改为整数,因此它需要一个简单的数组(不是稀疏的),并且会输出一个类似的数组。

现在来到 OneHotEncoder,one-hot 编码器的工作是为一列获取虚拟编码,其中对于单个样本只有一个 1(这就是为什么称为 1-hot)而所有其他的都是 0。

因此,如果一列 100 个样本有 7 个不同的类别,那么您将在输出中得到 7 个不同的列,总共有 700 个单元格,其中只有 100 个单元格有 1 个(每个样本一个),其余 600 个单元格有数据0. 这大约是一列。现在考虑这种情况,对于可能大于 10000 的大量样本数据的多列。大多数单元格将为 0。这就是为什么要节省内存,它返回一个稀疏矩阵。

如果您有足够的内存来处理,您应该将 OneHotEncoder 初始化为:

enc = OneHotEncoder(sparse=False)

在此,transform() 将返回一个简单的密集数组。

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 2017-11-29
    • 2016-08-09
    • 2018-01-29
    • 1970-01-01
    • 2015-03-21
    • 2017-10-11
    • 2021-11-02
    相关资源
    最近更新 更多