【发布时间】:2018-01-10 16:21:35
【问题描述】:
这是我使用 sklearn 的 OneHotEncoder 的问题。
使用数组a = [1,2,3,4,5,6,7,8,9,22],即a.shape=[10,1] 的ALL UNIQUE(reshape(-1,1) 之后,返回 OneHotEncoded 值的 [10,10] 矩阵。
array([[ 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]])
但是对于像 a = [1,2,2,4,4,6,7,8,9,22] 这样的数组,即 a.shape=[10,1] 的 NON UNIQUE(在 reshape(-1,1) 之后,会返回一个 [10,8] 的 OneHotEncoded 值矩阵。
array([[ 1., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 1., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 1.]])
但我不能使用它,因为我的输入占位符需要一个 [10,10] 矩阵作为输入。谁能帮我处理 sklearn 的 OneHotEncoder 中的非唯一值?
P.S 添加参数 n_values= 10 会出现错误提示 ValueError: Feature out of bounds for n_values=10
【问题讨论】:
标签: python machine-learning scikit-learn one-hot-encoding