两个数组的一次热编码(标记两个数据源)

Posted

技术标签:

【中文标题】两个数组的一次热编码(标记两个数据源)【英文标题】: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 做到这一点?

【问题讨论】:

【参考方案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 轴是附加参数,而不是零或一,因此请相应地使用括号

以上是关于两个数组的一次热编码(标记两个数据源)的主要内容,如果未能解决你的问题,请参考以下文章

循环对 PANDAS 数据帧进行一次热编码质量检查

一次热编码期间的 RunTimeError

一次对多列进行一次热编码并附加到主数据集?

对两列字符串数据执行一次热编码

我是不是必须对训练和测试数据集分别进行一次热编码? [关闭]

如何在 Python 中对数据框列进行一次热编码?