【问题标题】:Sci-Kit learn KBinsDicretizer produces different shapeScikit 学习 KBinsDiscretizer 产生不同的形状
【发布时间】:2020-04-27 14:49:04
【问题描述】:

我需要对数据集的属性进行等宽离散化,然后继续绘制离散化与连续的值数据集。为此我需要完整的离散值数据集而不是稀疏矩阵

X,y = datasets[0]
enc = KBinsDiscretizer(n_bins=5 )
X_binned = enc.fit_transform(X)
print(pd.DataFrame.sparse.from_spmatrix(X_binned).shape)
print(X.shape)

输出:

(100, 10)
(100, 2)

谢谢

【问题讨论】:

    标签: python pandas dataframe machine-learning scikit-learn


    【解决方案1】:

    问题是KBinsDiscretizer默认编码方式是onehot,这意味着转换后的结果将是每个特征得到的OneHot编码列。

    您可以将编码设置为ordinal,以便将每个 bin 编码为整数值,从而保留形状:

    enc = KBinsDiscretizer(n_bins=5, encode='ordinal')
    X_binned = enc.fit_transform(x)
    

    【讨论】:

    • 谢谢你的工作,你能给出原因吗?如果我没记错的话,onehotencoding 是将分类值转换为离散值,以便分类器使用。那为什么它会产生 num_attributes*bins 的形状
    • OneHotEncoders 将一个分类变量转换为 n 个新列,每个类别对应一个特征采用 @aijax
    猜你喜欢
    • 2022-12-06
    • 2016-01-31
    • 2018-10-21
    • 2016-12-20
    • 2014-12-27
    • 1970-01-01
    • 2021-10-14
    • 2015-12-22
    • 2016-07-16
    相关资源
    最近更新 更多