我有一个训练集,我用它来构建一些机器学习模型,我需要设置一些代码来预测测试集(我无法访问)。
例如,如果我有一个DataFrame,train
:
car
0 Audi
1 BMW
2 Mazda
我可以使用pd.get_dummies
来获取:
car_Audi car_BMW car_Mazda
0 1 0 0
1 0 1 0
2 0 0 1
调用此结果DataFrame,train_encoded
现在,假设我的test
DataFrame看起来像:
car
0 Mercedes
我可以使用:
pd.get_dummies(test).reindex(columns=train_encoded.columns)
得到:
car_Audi car_BMW car_Mazda
0 0 0 0
如何将NaN
与car
列中看不见的值相同?也就是说,如果我在NaN
的{{1}}列中遇到car
,我想回来:
test
谢谢!
答案 0 :(得分:1)
如果您生成的字符串filler
未显示在df.car
中,那么,
在评论中稍微修改了Wen的建议(对于'NAN'
是df.car
中的字符串的情况),你可以使用
df.car.fillna(filler, inplace=True)
pd.get_dummies(test).reindex(columns=train_encoded.columns)
定义filler
的一种方法是,如果您事先可以访问所有df.car
,则可以通过
filler = '_' + ''.join(df.car.unique())
因为它至少比其中最长的字符串长1。另一种方式是using a random string
filler = ''.join(random.choice(string.ascii_lowercase) for _ in range(10))
您拥有此类项目的概率小于len(df) / 26 ** 10
。