5、分类变量:自动化时代的数据计数
- 分类变量是用来表示类别或标记的,又称为无序变量
- 大型分类变量,分箱计数
5.1 分类变量的编码
分类变量中的类别通常不是数值型的。例如,眼睛的颜色可以是“黑色”“蓝色”和“褐 色”,等等。因此,需要一种编码方法来将非数值型的类别转换为数值。如果简单地为 k 个可能类别中的每个类别分配一个整数,如从 1 到 k,但这样做的结果是 使类别彼此之间有了顺序,这在分类变量中是不允许的。
- 三个不同城市的公寓价格数据集
5.1.1 one-hot 编码
使用一组比特位,每个比特位表示一种可能的类别。如果变量不能同时属于 多个类别,那么这组值中就只有一个比特位是“开”的。这就是 one-hot 编码,它可以通 过scikit-learn
中 的 sklearn.preprocessing.OneHotEncoder
实 现。 每 个 比 特 位 表 示 一 个 特 征,因此,一个可能有 k 个类别的分类变量就可以编码为一个长度为 k 的特征向量。
- 对3个城市的类别进行独热编码
5.1.2 虚拟编码
one-hot 编码的问题是它允许有 k 个自由度,而变量本身只需要 k-1 个自由度。虚拟编码在进行表示时只使用 k-1 个特征,除去了额外的自由度。没有被使用的那个特征通过一个全零向量来表示,它称为参照类。虚拟编码和 one-hot 编码都可以通过 Pandas 包中的pandas.get_dummies
来实现。
-
对3个城市的类别进行dummy编码
-
eg:在独热编码上的线性回归
>>> import pandas
>>> from sklearn import linear_model
# 定义一个模拟数据集,表示纽约、旧金山和西雅图的公寓租金
>>> df