如何默认为每个功能创建两列(一个热编码)?
How to create by default two columns for every features (One Hot Encoding)?
我的特征工程针对不同的文档运行。对于某些文档,某些特征不存在,随后子列表仅包含相同的值,例如第三个子列表 [0,0,0,0,0]
。该子列表的一种热编码导致只有一列,而其他文档的特征列表被转换为两列。如果它只包含一个相同的值并将该列插入正确的位置,是否有可能告诉 ohe 也创建两列?主要问题是我的不同文档的特征数据框包含不同数量的列的末尾,这使得它们无法比较。
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。
我的特征工程针对不同的文档运行。对于某些文档,某些特征不存在,随后子列表仅包含相同的值,例如第三个子列表 [0,0,0,0,0]
。该子列表的一种热编码导致只有一列,而其他文档的特征列表被转换为两列。如果它只包含一个相同的值并将该列插入正确的位置,是否有可能告诉 ohe 也创建两列?主要问题是我的不同文档的特征数据框包含不同数量的列的末尾,这使得它们无法比较。
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。