Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 默认情况下,如何为每个功能创建两列(一个热编码)?_Python_Pandas_Dataframe_One Hot Encoding_Feature Engineering - Fatal编程技术网

Python 默认情况下,如何为每个功能创建两列(一个热编码)?

Python 默认情况下,如何为每个功能创建两列(一个热编码)?,python,pandas,dataframe,one-hot-encoding,feature-engineering,Python,Pandas,Dataframe,One Hot Encoding,Feature Engineering,我的功能工程针对不同的文档运行。对于某些文档,某些功能不存在,因此子列表仅包含相同的值,如第三个子列表[0,0,0,0,0]。此子列表的一个热编码只会导致一列,而其他文档的特征列表会转换为两列。如果ohe只包含一个相同的值,是否有可能让ohe也创建两列,并将该列插入正确的位置?主要问题是不同文档的FeatureDataFrame包含在不同列数的末尾,这使得它们不具有可比性 import pandas as pd feature = [[0,0,1,0,0], [1,1,1,0,1], [0,0

我的功能工程针对不同的文档运行。对于某些文档,某些功能不存在,因此子列表仅包含相同的值,如第三个子列表
[0,0,0,0,0]
。此子列表的一个热编码只会导致一列,而其他文档的特征列表会转换为两列。如果ohe只包含一个相同的值,是否有可能让ohe也创建两列,并将该列插入正确的位置?主要问题是不同文档的FeatureDataFrame包含在不同列数的末尾,这使得它们不具有可比性

import pandas as pd 
feature = [[0,0,1,0,0], [1,1,1,0,1], [0,0,0,0,0], [1,0,1,1,1], [1,1,0,1,1], [1,0,1,1,1], [0,1,0,0,0]]

df = pd.DataFrame(feature[0])
df_features_final  = pd.get_dummies(df[0])

for feature in feature[1:]:
    df = pd.DataFrame(feature)
    df_enc = pd.get_dummies(df[0])
    print(df_enc)
    df_features_final = pd.concat([df_features_final, df_enc], axis = 1, join ='inner')


print(df_features_final)
结果是以下数据帧。正如您在“更改列标题”中所看到的,第5列之后不跟随1:

   0  1  0  1  0  0  1  0  1  0  1  0  1
0  1  0  0  1  1  0  1  0  1  0  1  1  0
1  1  0  0  1  1  1  0  0  1  1  0  0  1
2  0  1  0  1  1  0  1  1  0  0  1  1  0
3  1  0  1  0  1  0  1  0  1  0  1  1  0
4  1  0  0  1  1  0  1  0  1  0  1  1  0


我至少没有注意到您在pandas中想要的功能。但是,在TensorFlow中,我们确实有

tf.one_hot(
    indices, depth, on_value=None, off_value=None, axis=None, dtype=None, name=None
)

将“深度”设置为2。

好的,这里有一个解决熊猫问题的方法。检查是否有这样一个只有1个唯一值的数组,最后添加一个伪值。运行dummies函数。然后,从输出中删除最后一行。我尝试用tf解决它。对于我的输入,
tf.one\u hot
显示此错误:
tensorflow.python.framework.errors\u impl.NotFoundError:找不到节点的有效设备。
您见过它吗?您有哪个tensorflow。你有没有尝试过这种解决方法?我认为如果将代码限制在一个库中会更好。tf是2.1.0。我认为TF的解决方案是清洁的,如果使用的话,它更喜欢使用它。这个节点问题已经困扰了一段时间,您可以尝试将数组强制转换为np.float32。