【问题标题】:Python sklearn OneHotEncoding categorical and sometimes repeated valuesPython sklearn OneHotEncoding 分类和有时重复的值
【发布时间】: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


    【解决方案1】:

    您知道分类特征可以采用的所有值吗?如果是这样,你可以这样做:

    enc = OneHotEncoder()   
    enc.fit(np.asarray([1,2,3,4,5,6,7,8,9,22]).reshape(-1, 1)) #fit your encoder to the values
    data_for_encoding =  np.asarray([1,2,2,4,4,6,7,8,9,22]).reshape(-1, 1) #your data
    sparse_matrix = enc.transform(data_for_encoding) #encoded data
    

    【讨论】:

      猜你喜欢
      • 2020-06-30
      • 2020-12-27
      • 2020-04-11
      • 2020-11-25
      • 1970-01-01
      • 2018-05-27
      • 2021-07-19
      • 1970-01-01
      • 2021-09-14
      相关资源
      最近更新 更多