一次热编码多维数据

Posted

技术标签:

【中文标题】一次热编码多维数据【英文标题】:One hot encoding multi dimensional data 【发布时间】:2018-01-04 22:25:23 【问题描述】:

我正在尝试使用下面的代码对多维数据进行热编码。在这种情况下,数据是 2d。该代码对 1d 数据按预期工作,但对于 2d 数据,每列是一个热编码而不是整行。例如:对于第一个数据点[9,8],而不是生成单个热编码数据点,生成两个数据点,每个数据点分别对应于 9 和 8。

如何对多维数据进行一次热编码?

2dim.csv:

x_1,x_2
9,8
2,3
4,3
120,3
4,3
1,89
2,6
3,3

代码:

from sklearn.preprocessing import LabelEncoder
from keras.utils import np_utils
import pandas as pd

inputValues = pd.read_csv('2dim.csv')

enc = inputValues.apply(LabelEncoder().fit_transform)
cat = np_utils.to_categorical(enc , 20)

inputValues : 

cat : 

cat 应该包含 9 个一热编码数据点,而不是 18 个。

是否有一种可能的解决方案来组合每 2 个相邻的内部数组? ,例如array([[1...n_1],[2...n_2],[3...n_3],[4...n_4]]) 映射到array([[1...n_1,2...n_2],[3...n_3,4...n_4]])

【问题讨论】:

查看this 的帖子。它解释了如何在两个特征上获得一个热编码 @Sriram 感谢您的链接。一种热编码是多维数据的常见操作,我原以为有一个基于 pandas 和/或 scikit-learn 的简单函数调用。您引用的链接中包含的解决方案并不过分复杂,但比我预期的要复杂。 Keras 让深度学习模型的原型制作变得简单,奇怪的是,一个热编码不存在相同的原理,还是我不理解某些东西? 【参考方案1】:

试试:pd.get_dummies(inputValues)(docs)

【讨论】:

以上是关于一次热编码多维数据的主要内容,如果未能解决你的问题,请参考以下文章

一次热编码期间的 RunTimeError

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

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

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

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

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