首页 > 解决方案 > Sci-Kit 学习 KBinsDicretizer 产生不同的形状

问题描述

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

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)

谢谢

标签: pythonpandasdataframemachine-learningscikit-learn

解决方案


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

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

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

推荐阅读