这里的数据表示法是否适用于One-Hot编码



我正试图在这里对蘑菇数据集进行编码(https://www.kaggle.com/uciml/mushroom-classification)使用One Hot Encoding。以下是我(在Python中(用于编码的代码:

from sklearn.preprocessing import OneHotEncoder
second_df = OneHotEncoder(handle_unknown='ignore').fit_transform(new_df)
print(second_df)

我的代码的结果在这张图中,这让我很困惑:编码的结果。

这个结果是我的One-Hot编码的正确表示形式吗?如果没有,我该怎么修复代码?

输出看起来有点不寻常,因为OneHotEncoder默认返回稀疏矩阵:

OneHotEncoder(*, categories='auto', drop=None, sparse=True, dtype=<class 'numpy.float64'>, handle_unknown='error')

稀疏输出被解释为(row, col) non_zero_value,其中所有未列出的坐标都为零:

(0, 1)    1.0         # value 1.0 at row 0, col 1
(0, 7)    1.0         # value 1.0 at row 0, col 7
...

要获得密集阵列,

  • 任一集合sparse=False:

    OneHotEncoder(sparse=False).fit_transform(new_df)
    
  • 或链toarray:

    OneHotEncoder().fit_transform(new_df).toarray()
    

输出:

array([[0., 0., 0., ..., 0., 0., 1.],
[0., 0., 0., ..., 0., 1., 0.],
[1., 0., 0., ..., 0., 1., 0.],
...,
[0., 0., 1., ..., 0., 1., 0.],
[0., 0., 0., ..., 0., 0., 1.],
[0., 0., 0., ..., 0., 1., 0.]])

最新更新