在python的scikit-learn中,模型不支持字符串的变量进行运算(尽管在pandas和numpy中是支持的),这就要求我们自己来转换类型。
当多个变量存在字符串类型需要转换数字时,我们可以定义编码函数:
def label_encoder(series):
cat = series.value_count(dropna=False) #统计出现次数
return {k:v for k,v in zip(cat.index,range(len(series)))} # zip迭代输出
将所有变量进行编码,其中要保持测试集和训练集编码一致:
for i in x_d:
encoder = label_encoder(train[i])
##用replace进行替换
train[i].replace