机器学习基础知识——标签化
特征编码:
在数据挖掘中,一些算法可以直接计算分类变量,比如决策树模型,但是需多算法不能直接处理分类变量,他们的输入和输出都是数值型数据。因此。把分类变量转换成数值型数据是必要的,这样我们就引入了独热编码和哑编码。比较常用的是对逻辑回归中的连续变量做离散化处理,然后对离散特征进行独热编码或哑编码,这样就可以使模型具有较强的非线性能力。
我闷举几个例子
# python 算法 不支持 分类变量
from sklearn.tree import DecisionTreeClassifier
X = ['a','a','b','b']
y = [0,0,1,1]
Dtree = DecisionTreeClassifier()
Dtree.fit(np.array(X).reshape(-1,1),y) # X 必须是二维数组
# 得到结果证明不能处理非数值型数据
ValueError: could not convert string to float: 'a'
但是
X = ['1','1','2','2']
y = [0,0,1,1]
Dtree = DecisionTreeClassifier()
Dtree.fit(np.array(X).reshape(-1,1),y) # X 必须是二维数组
# 这个就可以,虽然X里面是非数值型数据,但是这种类型,决策树会帮我们自动转换
在python里,非数值型数据无法进行处理,但是在其他工具里,决策树会自动将非数值型数据惊醒映射
字符串类型的数据转换为数值型数据的方法:
方法一:
标签化处理:最简单的处理方法,直接把分类变量映射成数字,具体原理就是将分类变量放入一个数组,去重之后变量的下标就将其映射为对应的数值,具体方法如下:
from sklearn.tree import DecisionTreeClassifier
from sklearn.preproce