机器学习【建模进阶指南】(二) - 知乎

https://zhuanlan.zhihu.com/p/108741050数组


在本篇中你将了解分类变量的内容,以及处理此类数据的三种方法。机器学习

什么是分类变量?

分类变量仅包含有限数量的值。函数

考虑一项调查,询问你吃早餐的频率,并提供四种选择:“从不”,“不多”,“大多很多天子”或“天天”。 在这种状况下,数据是分类的,由于数据值都属于一组固定的类别。 若是人们回应一项关于他们拥有哪一种品牌汽车的调查,那么回应将分为“本田”,“丰田”和“福特”等类别。 在这种状况下,数据也是分类的。 若是你尝试将这些变量放到Python中的大多数机器学习模型中而不先对其进行预处理,则会出现错误。 在本教程中,咱们将比较三种可用于准备分类数据的方法。

学习

三种处理方法


1)丢掉分类变量
这是最简单的方法,可是显然听上去不是太好的方法

区块链


2)标签编码 Label Encoding
标签编码就是把分类变量中的每个类别给一个整数值

编码



这种方法假定了类别的排序:“从不”(0)<“不多”(1)<“大多很多天子”(2)<“天天”(3)。spa

这个假设在这个例子中是有意义的,由于对类别有一个无可争议的排名。 并不是全部分类变量都在值中有明确的排序,但咱们选择将那些变量做为有序变量。 对于基于树的模型(如决策树和随机森林),你能够指望基于有序变量的标签编码是靠谱的3d

3)一位有效编码 One-Hot Encodingcode

一位有效编码建立新列,用来标示原始数据中每一个可能值的存在(或不存在)。 为了理解这一点,咱们来看一个例子:对象

在原始数据集中,“颜色”是一个分类变量,有三个类别:“红色”,“黄色”和“绿色”。 相应的一位有效编码包含每一个可能值的一列,以及原始数据集中每行的一行。 不管原始值是“红色”,咱们在“红色”列中放置1; 若是原始值为“黄色”,咱们在“黄色”列中放置1,依此类推。

与标签编码相反,一位有效编码不假设类别的排序。 所以,若是分类数据中没有明确的排序(例如,“红色”既很少于也不小于“黄色”),则能够指望这种方法特别有效。 咱们将没有内在排名的分类变量称为名义变量。

若是分类变量具备大量值,则一位有效编码一般不能很好地执行(即,一般不会将其用于超过15个不一样值的变量)。

案例

与上一个教程同样,咱们将使用Melbourne Housing数据集。

点击这里 下载 数据集

咱们不会关注数据加载步骤。 相反,你能够想象你已经拥有X_train,X_valid,y_train和y_valid中的训练和验证数据。


看一下训练数据:


接下来,咱们得到训练数据中全部分类变量的列表。

咱们经过检查每列的数据类型(或dtype)来完成此操做。 对象dtype表示列有文本(理论上能够有其余东西,但这对咱们的目的来讲并不重要)。 对于此数据集,带有文本的列表示多是分类变量。

定义测量每种方法好坏的函数

咱们定义一个函数score_dataset()来比较处理分类变量的三种不一样方法。 此函数返回随机森林模型的平均绝对偏差(MAE)。 通常来讲,咱们但愿MAE尽量低!

方法1的分数(删除分类变量)

咱们使用select_dtypes()方法删除对象列。

方法2(标签编码)得分

Scikit-learn有一个LabelEncoder类,可用于获取标签编码。 咱们循环分类变量并将标签编码器分别应用于每列。

方法3(一位有效编码)得分

咱们使用scikit-learn中的OneHotEncoder类来得到一个一位有效编码。

  • 当验证数据包含未在训练数据中出现的类时,咱们设置handle_unknown ='ignore'以免错误,而且
  • 设置sparse = False可确保编码列做为numpy数组(而不是稀疏矩阵)返回。

要使用编码器,咱们只提供咱们想要进行一位有效编码的分类列。 例如,要编码训练数据,咱们提供X_train[object_cols]。 (下面的代码单元格中的object_cols是带有分类数据的列名列表,而X_train[object_cols]包含训练集中的全部分类数据。)

哪一种方法最好?

在这种状况下,删除分类列(方法1)表现最差,由于它具备最高的MAE分数。 至于其余两种方法,因为返回的MAE分数的价值很是接近,所以对另外一种方法彷佛没有任何有意义的好处。

一般,一位有效编码(方法3)一般表现最佳,而丢弃分类列(方法1)一般表现最差,但它根据具体状况而变化。

结论

世界充满了分类数据。 若是你知道如何使用这种通用数据类型,那么你将成为一名更有效的数据科学家!

原文连接

Vitu.ai - 数据从不说慌 - 区块链的世界也不例外

相关文章
相关标签/搜索