机器学习基础知识——标签化

2025-11-01 08:11:34

特征编码:

在数据挖掘中,一些算法可以直接计算分类变量,比如决策树模型,但是需多算法不能直接处理分类变量,他们的输入和输出都是数值型数据。因此。把分类变量转换成数值型数据是必要的,这样我们就引入了独热编码和哑编码。比较常用的是对逻辑回归中的连续变量做离散化处理,然后对离散特征进行独热编码或哑编码,这样就可以使模型具有较强的非线性能力。

我闷举几个例子

# 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