【发布时间】:2020-05-26 00:08:51
【问题描述】:
我想对这个列表进行一次热编码:
[0 0 1 1 1 2 2 2 4]
当我这样做时,one-hot 编码器将我的 4 转换为 3。也就是说,我得到了这个:
(0, 0) 1.0
(1, 0) 1.0
(2, 0) 1.0
(3, 1) 1.0
(4, 1) 1.0
(5, 1) 1.0
(6, 2) 1.0
(7, 2) 1.0
(8, 2) 1.0
(9, 3) 1.0
我想要这个(注意最后一行已更改):
(0, 0) 1.0
(1, 0) 1.0
(2, 0) 1.0
(3, 1) 1.0
(4, 1) 1.0
(5, 1) 1.0
(6, 2) 1.0
(7, 2) 1.0
(8, 2) 1.0
(9, 4) 1.0
完成 MWE:
import numpy as np
from sklearn.preprocessing import OneHotEncoder
idvals = [0, 0, 0, 1, 1, 1, 2, 2, 2, 4]
hot = OneHotEncoder()
h1 = hot.fit_transform(np.asarray(idvals).reshape(10, 1))
print(np.asarray(h1))
使用 Python 2.7.14 |Anaconda 自定义(64 位)| (默认,2017 年 12 月 7 日,17:05:42)
我怎样才能让最后一行是 (9, 4) 而不是 (9, 3)?
【问题讨论】:
标签: python numpy scikit-learn one-hot-encoding