2017-07-28 22 views
1

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

enter image description here

cat : 

enter image description here

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

是否可能的解决方案是将每两个相邻的内部数组结合起来? ,例如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]])

+0

检查[此](https://stackoverflow.com/q/23497512/8201433)柱。它解释了如何通过两个功能获得一个热门编码 – Sriram

+0

@Sriram感谢您的链接。一个热门编码对于多维数据是一种常见的操作,我认为有一个基于熊猫和/或scikit-learn的简单函数调用。您引用的链接中包含的解决方案不是过于复杂,而是比我预期的复杂。 Keras使原型成为一个深度学习模型变得简单,奇怪的是,一个热门编码不存在相同的原理,或者我不理解某些东西? –

回答

-1

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