如果您有多个虚拟列,如何预测值?

问题描述

当前有一个类似于以下内容的数据框:

   salary   job title  Raiting   Company_Name  Location   Seniority  
0  100         SE         5          apple        sf          vp
1  120         DS         4         Samsung       la          Jr
2  230         QA         5         google        sd          Sr

(我的df具有更多分类功能

通常,从模型进行预测时,其结果类似于

in[1]: inModel_name.predict(catagory_1,catagory_2,..etc)
out[2]: predicted_var

在使用pd.get_dummies之后,根据创建的分类功能数量,您将拥有大量的列,这使得我在尝试预测数据时前面提到的方法不切实际。您如何去引用多个列而不是手动输入0s

解决方法

我建议不要使用sklearn's onehotencoder

,而不要使用pd.get_dummies

请选中此link,以获取有关如何使用正确的数据编码方法替换pd.get_dummies的详细信息。

这使您可以在训练数据上使用.fit_transform,以获得一种用于训练的热编码表示。而且,当尝试使用测试数据进行预测时,您只需使用其.transform方法即可获得针对这些数据的一种热编码表示形式。

from sklearn.preprocessing import OneHotEncoder

enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male',1],['Female',3],2]]
enc.fit(X)
enc.categories_
[array(['Female','Male'],dtype=object),array([1,2,dtype=object)]
enc.transform([['Female',['Male',4]]).toarray()
array([[1.,0.,1.,0.],[0.,0.]])