【问题标题】:One hot encoding of two arrays (labeling two origins of data)两个数组的一次热编码(标记两个数据源)
【发布时间】:2020-05-23 16:19:56
【问题描述】:

我想使用一种热编码来对数据的来源进行分类。

我有两种数据作为 numpy 数组,Cp_aCp_b

这些数据分别具有(10000, 74)(7000, 74) 形状。

Cp_aCp_b的数据类型为float64

我想使用vstack()one hot encoding 将这些数据与分类值01 结合起来。

我想看到的最终形状是(17000,75),其中0 用于数据Cp_a1 用于数据Cp_b

如何使用 scikit learn 或 keras 做到这一点?

【问题讨论】:

    标签: python numpy keras scikit-learn


    【解决方案1】:
    >>> import numpy as np
    >>> a1 = np.arange(10).reshape(5,2)
    >>> a2 = np.random.randint(10,50,size=(5,2))
    >>> print(a1)
    [[0 1]
     [2 3]
     [4 5]
     [6 7]
     [8 9]]
    >>> print(a2)
    [[23 42]
     [39 28]
     [39 19]
     [49 46]
     [33 29]]
    >>> a1 = np.column_stack((a1,np.zeros((a1.shape[0],1))))
    >>> a2 = np.column_stack((a2,np.ones((a2.shape[0],1))))
    >>> np.vstack((a1,a2))
    array([[ 0.,  1.,  0.],
           [ 2.,  3.,  0.],
           [ 4.,  5.,  0.],
           [ 6.,  7.,  0.],
           [ 8.,  9.,  0.],
           [23., 42.,  1.],
           [39., 28.,  1.],
           [39., 19.,  1.],
           [49., 46.,  1.],
           [33., 29.,  1.]])
    

    【讨论】:

      【解决方案2】:

      您可以在 numpy 中使用 append 函数执行此操作。

      import numpy as np
      
      Cp_a = np.append(Cp_a, np.zeros((len(Cp_a), 1), axis=1)
      Cp_b = np.append(Cp_b, np.ones((len(Cp_b), 1), axis=1)
      Cp_ab = np.vstack([Cp_a, Cp_b])
      

      【讨论】:

      • 它有一个错误:TypeError: 'axis' is an invalid keyword argument for zeros()
      • @mario119 轴是附加参数,而不是零或一,因此请相应地使用括号
      猜你喜欢
      • 2021-09-26
      • 2020-12-27
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2015-02-03
      • 2017-06-08
      相关资源
      最近更新 更多