特征工程与模型调优( 七 )
文章插图
经过Box-Cox变换后描述开发者收入分布的直方图
分布看起来更像是正态分布 , 与我们经过 log 变换后的分布相似 。
类别型数据上的特征工程在深入研究特征工程之前 , 让我们先了解一下分类数据 。 通常 , 在自然界中可分类的任意数据属性都是离散值 , 这意味着它们属于某一特定的有限类别 。 在模型预测的属性或者变量(通常被称为响应变量 response variables)中 , 这些也经常被称为类别或者标签 。 这些离散值在自然界中可以是文本或者数字(甚至是诸如图像这样的非结构化数据) 。 分类数据有两大类——定类(Nominal)和定序(Ordinal) 。
在任意定类分类数据属性中 , 这些属性值之间没有顺序的概念 。 如下图所示 , 举个简单的例子 , 天气分类 。 我们可以看到 , 在这个特定的场景中 , 主要有六个大类 , 而这些类之间没有任何顺序上的关系(刮风天并不总是发生在晴天之前 , 并且也不能说比晴天来的更小或者更大)
文章插图
将天气作为分类属性
与天气相类似的属性还有很多 , 比如电影、音乐、电子游戏、国家、食物和美食类型等等 , 这些都属于定类分类属性 。
定序分类的属性值则存在着一定的顺序意义或概念 。 例如 , 下图中的字母标识了衬衫的大小 。 显而易见的是 , 当我们考虑衬衫的时候 , 它的“大小”属性是很重要的(S 码比 M 码来的小 , 而 M 码又小于 L 码等等) 。
文章插图
衬衫大小作为定序分类属性
鞋号、受教育水平和公司职位则是定序分类属性的一些其它例子 。 既然已经对分类数据有了一个大致的理解之后 , 接下来我们来看看一些特征工程的策略 。
在接受像文本标签这样复杂的分类数据类型问题上 , 各种机器学习框架均已取得了许多的进步 。 通常 , 特征工程中的任意标准工作流都涉及将这些分类值转换为数值标签的某种形式 , 然后对这些值应用一些编码方案 。 我们将在开始之前导入必要的工具包 。
import pandas as pdimport numpy as np定类属性转换(LabelEncoding)定类属性由离散的分类值组成 , 它们没有先后顺序概念 。 这里的思想是将这些属性转换成更具代表性的数值格式 , 这样可以很容易被下游的代码和流水线所理解 。 我们来看一个关于视频游戏销售的新数据集 。 这个数据集也可以在 Kaggle 和我的 GitHub 仓库中找到 。
vg_df = pd.read_csv('datasets/vgsales.csv', encoding='utf-8')vg_df[['Name', 'Platform', 'Year', 'Genre', 'Publisher']].iloc[1:7]
文章插图
游戏销售数据
让我们首先专注于上面数据框中“视频游戏风格(Genre)”属性 。 显而易见的是 , 这是一个类似于“发行商(Publisher)”和“平台(Platform)”属性一样的定类分类属性 。 我们可以很容易得到一个独特的视频游戏风格列表 , 如下 。
genres = np.unique(vg_df['Genre'])genresOutput\------array(['Action', 'Adventure', 'Fighting', 'Misc', 'Platform', 'Puzzle', 'Racing', 'Role-Playing', 'Shooter', 'Simulation', 'Sports', 'Strategy'], dtype=object)输出结果表明 , 我们有 12 种不同的视频游戏风格 。 我们现在可以生成一个标签编码方法 , 即利用 scikit-learn 将每个类别映射到一个数值 。
from sklearn.preprocessing import LabelEncodergle = LabelEncoder()genre_labels = gle.fit_transform(vg_df['Genre'])genre_mappings = {index: label for index, label in enumerate(gle.classes_)}genre_mappingsOutput\------{0: 'Action', 1: 'Adventure', 2: 'Fighting', 3: 'Misc', 4: 'Platform', 5: 'Puzzle', 6: 'Racing', 7: 'Role-Playing', 8: 'Shooter', 9: 'Simulation', 10: 'Sports', 11: 'Strategy'}
推荐阅读
- 运动计数开发项目的对抗赛:飞算全自动软件工程平台碾压传统模式
- 雷军:2021年的第一件大事,给工程师发百万美金大奖
- 快递员工也能当“教授”?上海快递工程技术高级职称评审实现突破
- Google AI建立了一个能够分析烘焙食谱的机器学习模型
- 日本工程师:潘多拉魔盒被美国打开,中国办芯片大学只为打破禁令
- 疑似华为P50工程机曝光:正面单挖孔 后置5摄
- 华为P50工程样机真机曝光,小米回应充电器致手机重启问题
- OpenAI推DALL-E模型:能根据文字描述生成图片
- 中国电子信息工程科技发展十四大趋势发布
- 威海高新区2项目获2020年度山东省重点研发计划(重大科技创新工程)立项支持
