我想对数据进行虚拟编码(或类似),以提供给Keras。
现在,我用Spark处理表格数据,然后使用Keras进行训练。
问题是我有一个包含字符串数据的列,无法将其直接提供给Keras,因此我需要将其转换为整数。
我已经做过StringIndexer
+ OneHotEncoding
,但问题是我得到了一列稀疏向量,这不是我想要的,我要给Keras。
data = sqlContext.createDataFrame(
[(1,"a",23.0,"mak"),(3,"B",-23.0,"kaks"),-22.0,"chochon")],("x1","x2","x3","x4"))
data.show()
+---+---+-----+-------+--------+--------+-------------+-------------+
| x1| x2| x3| x4|x2_index|x4_index| x2_vector| x4_vector|
+---+---+-----+-------+--------+--------+-------------+-------------+
| 1| a| 23.0| mak| 0.0| 1.0|(1,[0],[1.0])|(2,[1],[1.0])|
| 3| B|-23.0| kaks| 1.0| 0.0| (1,[],[])|(2,[1.0])|
| 3| a|-22.0| kaks| 0.0| 0.0|(1,[1.0])|
| 3| a|-22.0|chochon| 0.0| 2.0|(1,[1.0])| (2,[])|
+---+---+-----+-------+--------+--------+-------------+-------------+
您有什么事要做才能为keras提供“良好数据”?
I though something like that :
+---+---+-----+-------+--------+--------+-------------+-------------+-------------+-------------+
| x1| x2| x3| x4|x2_index|x4_index| x2_vector| x4_0| x4_1| x4_2|
+---+---+-----+-------+--------+--------+-------------+-------------+-------------+-------------+
| 1| a| 23.0| mak| 0.0| 1.0|(1,[1.0])| 1| 0| 0|
| 3| B|-23.0| kaks| 1.0| 0.0| (1,[])| 0| 1| 0|
| 3| a|-22.0| kaks| 0.0| 0.0|(1,[1.0])| 0| 1| 0|
| 3| a|-22.0|chochon| 0.0| 2.0|(1,[1.0])| 0| 0| 1|
+---+---+-----+-------+--------+--------+-------------+-------------+-------------+-------------+
但是我不知道这是否也是一件好事。