在特征处理中,有一些特征里面的值是一些可分类的字符串,举个例子:
姓名 | 学历 | 收入 |
---|---|---|
小张 | 高中 | 4000-5000元 |
小王 | 本科 | 6000-7000元 |
小李 | 硕士 | 8000-9000元 |
小赵 | 本科 | 6000-7000元 |
… | … | … |
学历可分为:高中、大专、本科、硕士等。收入可分为:4000-5000元、6000-7000元等。这些分类有时为中文,容易产生乱码。有些是英文字符,可能比较长,查看不方便。如果样本量非常多的话,保存下来的文件较大。
所以可以将 高中→1,大专→2,本科→3 ···;4000-5000元→1、6000-7000元→2 ···
这些特征工程处理上,可以对这种可分类的字符串进行替换,映射成一组数字去替换。但需要注意的是,虽然用数字替换,但数字仅仅是各分类变量的一个替换,并没有真正意义的数字含义,所以不能比较大小,也不能当成连续字符处理。
下面给出了批量替换的代码。
首先是将字符串映射成数字,然后逐列操作。
## 分类变量→数字的映射
def str2num(col_name):
value_dict = {
}
unique_str = np.unique(col_name)
for num,v