两个数组的一次热编码(标记两个数据源)
Posted
技术标签:
【中文标题】两个数组的一次热编码(标记两个数据源)【英文标题】:One hot encoding of two arrays (labeling two origins of data) 【发布时间】:2020-05-23 16:19:56 【问题描述】:我想使用一种热编码来对数据的来源进行分类。
我有两种数据作为 numpy 数组,Cp_a
和 Cp_b
。
这些数据分别具有(10000, 74)
和(7000, 74)
形状。
Cp_a
和Cp_b
的数据类型为float64
。
我想使用vstack()
和one hot encoding
将这些数据与分类值0
或1
结合起来。
我想看到的最终形状是(17000,75)
,其中0
用于数据Cp_a
,1
用于数据Cp_b
。
如何使用 scikit learn 或 keras 做到这一点?
【问题讨论】:
【参考方案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 轴是附加参数,而不是零或一,因此请相应地使用括号以上是关于两个数组的一次热编码(标记两个数据源)的主要内容,如果未能解决你的问题,请参考以下文章