我正试图在这里对蘑菇数据集进行编码(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.]])