我得到了一个客户数据框以及有关他们活动的信息,并且我建立了一个模型来预测他们是否购买产品。我的标签是“ did_buy”列,如果客户购买,则分配1,否则分配0。我的模型考虑了数字列,但我也想将类别列添加到预测模型中,但我不确定如何转换它们并在我的X训练中使用它们。这是我的数据框列的一瞥:
Company_Sector Company_size DMU_Final Joining_Date Country
Finance and Insurance 10 End User 2010-04-13 France
Public Administration 1 End User 2004-09-22 France
更多列:
linkedin_shared_connections online_activity did_buy Sale_Date
11 65 1 2016-05-23
13 100 1 2016-01-12
答案 0 :(得分:0)
您有不同的选择将类别变量转换为数值或二进制变量。 例如,数据框中的国家/地区列具有不同的值(例如,法国,中国,...)。您可以将它们转换为数值变量的解决方案之一是: {法国:1,中国:2,....}
#import libraries
from sklearn import preprocessing
import pandas as pd
#Create a label encoder object and fit to Country Column
label_encoder = preprocessing.LabelEncoder()
label_encoder.fit(df['Country'])
# View the label {France,China,...}
list(label_encoder.classes_)
# Transform Country Column to Numerical Var
label_encoder.transform(df['Country'])
# Convert some integers into their category names --->{China,China,France}
list(label_encoder.inverse_transform([2, 2, 1]))
答案 1 :(得分:0)
让我建议您首先确定哪些分类变量是序数(顺序计数,例如好,很好,不好等),哪些是名义变量(顺序与颜色无关)。对于序数,您可以按以下方式使用地图:
Category
0 Excellent
1 Excellent
2 Bad
3 Good
4 Bad
5 Very Good
6 Very Bad
df.Category = df.Categoy.map({'Excellent':5, 'Very Good':4,
'Good':3, 'Fair':2, 'Bad':1, 'Very Bad':0})
Category
0 5
1 5
2 1
3 3
4 1
5 4
6 0
对于名义变量,您可以实现虚拟变量方法。例: 假设您的分类变量具有两个值“ Native”和“ Foreign”。您可以创建一个名为“ Native”的列,该列的“ 1”代表本机,0代表“外国”。可以针对多个类别实施。
data = pd.DataFrame({"Origin": ['Native', 'Native', 'Foreign', 'Native', 'Foreign']})
Origin
0 Native
1 Native
2 Foreign
3 Native
4 Foreign
data['Native'] = pd.get_dummies(data['Origin'], drop_first=True)
data.drop("Origin", axis = 1, inplace = True)
这将导致:
Native
0 1
1 1
2 0
3 1
4 0