我有一个类似于下面的数据框架:
salary job title Raiting Company_Name Location Seniority 0 100 SE 5 apple sf vp1 120 DS 4 Samsung la Jr2 230 QA 5 google sd Sr
(我的df
包含比这更多的分类特征)
通常,在从模型中进行预测时,过程大致如下:
in[1]: inModel_name.predict(catagory_1, catagory_2,..etc)out[2]: predicted_var
然而,在使用pd.get_dummies
之后,根据你创建的分类特征数量,列的数量会大幅增加,使得之前提到的方法在预测数据时变得不切实际。你如何引用多个列而不是手动输入0呢?
回答:
我建议不要使用pd.get_dummies
,而是使用sklearn的OneHotEncoder。
请查看这个链接,了解如何用适当的数据编码方法替代pd.get_dummies。
这样,你可以在训练数据上使用.fit_transform
来获得用于训练的一热编码表示。而在使用测试数据进行预测时,你可以简单地使用其.transform
方法来获得那些数据的一热编码表示。
from sklearn.preprocessing import OneHotEncoderenc = OneHotEncoder(handle_unknown='ignore')X = [['Male', 1], ['Female', 3], ['Female', 2]]enc.fit(X)enc.categories_
[array(['Female', 'Male'], dtype=object), array([1, 2, 3], dtype=object)]
enc.transform([['Female', 1], ['Male', 4]]).toarray()
array([[1., 0., 1., 0., 0.], [0., 1., 0., 0., 0.]])