【发布时间】:2018-12-11 00:00:25
【问题描述】:
我的数据框有 6 列,数据类型为 string(所有数据均为字符串类型)。我想将数据编码为二进制向量,以便在Keras、Tensorflow 中进行训练。
Llower Lupper Lbody OpenStyle CloseStyle Color
0 long middle long open_equal_low open_equal_low green
1 equal short long open_equal_low open_equal_low red
2 equal middle middle open_equal_high open_equal_low red
3 equal short middle open_equal_high open_equal_high green
4 short short middle open_equal_low open_equal_high red
我尝试将它们编码为int,然后再编码为binary vector。
我的转换为int的代码:
df = df.apply(labelEncoder.fit_transform)
结果:
Llower Lupper Lbody OpenStyle CloseStyle Color
0 1 2 1 2 2 1
1 0 3 1 2 2 2
2 0 2 2 1 2 2
3 0 3 2 1 1 1
4 3 3 2 2 1 2
当我尝试使用to_categorical 转换它们时:
df.Llower = to_categorical(df.Llower,num_classes=4)
df.Lbody = to_categorical(df.Lbody,num_classes=4)
df.Lupper = to_categorical(df.Lupper,num_classes=4)
df.OpenStyle = to_categorical(df.OpenStyle,num_classes=5)
df.CloseStyle = to_categorical(df.CloseStyle,num_classes=5)
df.Color = to_categorical(df.Color,num_classes=3)
结果:
Llower Lupper Lbody OpenStyle CloseStyle Color
0 0.0 0.0 0.0 0.0 0.0 0.0
1 1.0 0.0 0.0 0.0 0.0 0.0
2 1.0 0.0 0.0 0.0 0.0 0.0
3 1.0 0.0 0.0 0.0 0.0 0.0
4 0.0 0.0 0.0 0.0 0.0 0.0
这是将数据转换为二进制向量的错误。 如何将数据正确编码为二进制向量?(或者 Tensorflow/Keras 训练过什么没有任何问题)
我的第二个问题:
编码数据后,我必须将它们转换为Np Array,即全部为float64,代码为dataset = df.values。这种数据类型转换(binary vector 到 float64)是否会对训练质量造成任何问题?数据转换为Numpy Array后如何保持binary vectory?
【问题讨论】:
-
我不太清楚你对第一个问题想要什么,但我相信一旦你的数据在数据框中,pandas get_dummies 会为你工作。 pandas.pydata.org/pandas-docs/stable/generated/… 对于第二个问题,我个人在使用一系列机器学习算法在 np 数组和 pd 数据帧之间转换没有任何问题,在这种情况下,因为它只是一个分类数字,我不希望这样做。祝你好运
标签: python pandas numpy tensorflow keras