我有一个示例熊猫数据框,我正在尝试对它应用一种热编码。
import pandas as pd
text = ['apple,banana'
, 'apple'
, 'orange,banana']
# create pandas df
train_data = pd.DataFrame( text, columns = ['my_category'])
我尝试使用get_dummies
方法
# Get dummies
train_data_transformed = pd.get_dummies(train_data, prefix_sep='_', )
# transformed training data
train_data_transformed.head()
但是我得到了错误的结果,因为我想要的是将文本值中的每个单词都转换为带有0或1标志的单个列-
因此,我想在输出中有3列,看起来像
my_category_apple my_category_orange my_category_banana
1 0 1
1 0 0
0 1 1
另外,如果由于某种原因到达了一些新数据点,而这不是经过训练的编码器模型的一部分,那么我想将所有位都设为低。
因此,如果有新数据
unseen_text = ['mango','orange']
unseen_data = pd.DataFrame( unseen_text, columns = ['my_category'])
unseen_data.head()
然后,我希望输出为-
my_category_apple my_category_orange my_category_banana
0 0 0
0 1 0
如何在熊猫和/或sklearn中实现这一目标? LabelEncoder或OneHotEncoder是否可以帮助我解决此问题?