一次热编码多维数据
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)
【讨论】:
以上是关于一次热编码多维数据的主要内容,如果未能解决你的问题,请参考以下文章