[英]How to create dummy columns for prediction?
我已经完成了scikit-learn
model 的训练并将其保存为pickle
文件。 现在我想加载 model 并运行预测,但我不知道如何预处理输入数据。
dataset = {
'airline': ['SpiceJet', 'Indigo', 'Air_India']
}
df = pd.DataFrame.from_dict(dataset)
airline
列有 3 个航空公司,它们将用于使用以下代码创建虚拟列:
def preprocessing(df):
dummies = pd.get_dummies(df["airline"], drop_first=True)
return dummies
用于训练的数据集将具有如下架构:
| airline_SpiceJet | airline_Indigo | airline_Air_India |
我的问题是下面的输入,我怎样才能 map 输入到相应的列?
input = {
'airline': ['SpiceJet']
}
数据集的预期 output:
| airline_SpiceJet | airline_Indigo | airline_Air_India |
| ---------------- | -------------- | ----------------- |
| 1 | 0 | 0 |
我认为 pandas get_dummies() 方法的问题在于它根据输入数据定义虚拟列,如本期Dummy variables when not all categories are present中所述。
根据那里的答案,您可以调整您的代码以获得这样的假人:
dataset = {
'airline': ['SpiceJet', 'Indigo', 'Air_India']
}
input = {
'airline': ['SpiceJet']
}
possible_categories = dataset["airline"]
dummy_input = pd.Series(input["airline"])
display(pd.get_dummies(dummy_input.astype(pd.CategoricalDtype(categories=possible_categories))))
Output:
香料航空 | 靛青 | 空运_印度 |
---|---|---|
1 | 0 | 0 |
有了更多的输入数据,它可能看起来像这样:
input_2 = {
'airline': ['SpiceJet','Indigo','SpiceJet','Indigo','Air_India']
}
dummy_input_2 = pd.Series(input_2["airline"])
display(pd.get_dummies(dummy_input_2.astype(pd.CategoricalDtype(categories=possible_categories))))
香料航空 | 靛青 | 空运_印度 |
---|---|---|
1 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.