Machine learning 使用一个热编码特性部署机器学习模型
我已经训练了一个xgboost分类器,它具有我之前热编码过的分类特征。 例如,我有一个分类特征“年”,它取2014年到2018年之间的值。当OHEd我得到5个二进制特征:2014年、2015年、2016年、2017年、2018年。如果我对年份=2019的样本进行预测,会发生什么情况,因为特征年份2019不存在Machine learning 使用一个热编码特性部署机器学习模型,machine-learning,deployment,production,one-hot-encoding,Machine Learning,Deployment,Production,One Hot Encoding,我已经训练了一个xgboost分类器,它具有我之前热编码过的分类特征。 例如,我有一个分类特征“年”,它取2014年到2018年之间的值。当OHEd我得到5个二进制特征:2014年、2015年、2016年、2017年、2018年。如果我对年份=2019的样本进行预测,会发生什么情况,因为特征年份2019不存在 更一般地说,为了对新样本进行预测,转换数据的稳健方法是什么?二进制特征的评估如下: if(year != ${year value}){ // Enter "left" branch
更一般地说,为了对新样本进行预测,转换数据的稳健方法是什么?二进制特征的评估如下:
if(year != ${year value}){
// Enter "left" branch
} else {
// Enter "right" branch
}
一个看不见的类别级别被发送到“左”分支。为什么不尝试,并在此处报告您可能遇到的任何问题?像您的“更一般”部分这样的问题可以说是离题的,这是关于实际的编码问题…预测功能将失败。关于问题的第二部分,没有直接的答案。但是你会在SO和其他SE网站上找到很好的讨论。这里有一个-。社区鼓励在SDE代码中添加解释,而不是纯粹基于代码的答案(请参阅)
#While traning say year has below values
df = pd.DataFrame([2014,2015,2016,2017,2018], columns = ['year'])
data=pd.get_dummies(df,columns=['year'])
data.head()
# while predicting lets say input for year is 2018
known_categories = ['2014','2015','2016','2017','2018']
year_type = pd.Series(['2018'])
year_type = pd.Categorical(year_type, categories = known_categories)
pd.get_dummies(year_type)
# column name does not matter only the values matters which will be input to the model