Я хочу фиктивно закодировать (или аналогичные) данные, чтобы передать их Keras.
Сейчас я обрабатываю свои табличные данные с помощью Spark, а затем обучаю их с помощью Keras.
Я получил столбец со строковыми данными и не могу передать его непосредственно Keras, поэтому мне нужно преобразовать его в целые числа.
Я уже сделал StringIndexer
+ OneHotEncoding
, но дело в том, что я получилстолбцы разреженного вектора, и это не то, что я хочу, я хочу дать Керасу.
data = sqlContext.createDataFrame(
[(1, "a", 23.0, "mak"), (3, "B", -23.0, "kaks"), (3, "a", -22.0, "kaks"), (3, "a", -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,[0],[1.0])|
| 3| a|-22.0| kaks| 0.0| 0.0|(1,[0],[1.0])|(2,[0],[1.0])|
| 3| a|-22.0|chochon| 0.0| 2.0|(1,[0],[1.0])| (2,[],[])|
+---+---+-----+-------+--------+--------+-------------+-------------+
Есть ли у вас что-то, что нужно сделать, чтобы дать «хорошие данные» керасу?
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,[0],[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,[0],[1.0])| 0| 1| 0|
| 3| a|-22.0|chochon| 0.0| 2.0|(1,[0],[1.0])| 0| 0| 1|
+---+---+-----+-------+--------+--------+-------------+-------------+-------------+-------------+
Но я не знаю, хорошо ли это делать тоже.