繁体   English   中英

如何创建虚拟列进行预测?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM