特征工程常见示例: 分类数据、文本、图像。 还有提高模型复杂度的 衍生特征 和 处理 缺失数据的填充 方法。这个过程被叫做向量化。把任意格式的数据 转换成具有良好特性的向量形式。

分类特征

比如房屋数据: 房价、面积、地点信息。



方案1:把分类特征用映射关系 编码成 整数 。

{'Queen Anne': 1, 'Fremont': 2, 'Wallingford': 3};

在scikit-learn中并不好,数值特征可以反映代数量。会产生 1<2<3的

方案2:使用独热编码

有效增加额外的类,让0和1 出现在对应的列分别表示 每个分类值 的有 或 无。

使用scikit-learn的DictVectorizer类就可以实现。

neighborhood字段转换成三列表示三个地点标签。 每一行中用1所在的列对应一个地点。

当这些分类特征编码之后,就可以和之前一样拟合 Scikit-Learn模型了

如果要看每一列的含义,使用get_feature_names()

缺陷:分类特征有许多枚举值,维度就会急剧增加。 由于被编码的数据中有许多0,因此用稀疏矩阵 会非常高效

文本特征

将文本转换成一组数值, 最简单的编码方法之一就是 单词统计



这样统计有一些问题,就是常用词聚集太高的权重,不合理。

解决方案:使用TF-IDF term requency-inverse document frequency 词频逆文档评率。 通过单词在文档中出现的评率来衡量器权重。

图像特征

对图像进行编码,最简单的就是:用像素表示图像。 后面详细介绍。 Scikit-Learn Scikit-Image

衍生特征

输入特征进过数学变换 衍生出来的新特征。 通过改变输入数据。 这种处理方式 又被称为 基函数回归。

不能用直线拟合的数据

如果按照直线拟合取得最优解如下



我们需要一个更复杂的模型来描述 x 与 y的关系,可以对数据进行变换,蹦增加额外的特征来提升模型 的复杂度。

比如:增加多项式特征。

第一列表示x,

第二列表示x^2

第三列表示x^3

重新拟合。

缺失值填充

原始数据如下



首先需要适当的值替换这些缺失数据。

方案1: 用列均值替换缺失值,中位数、众数。 SciKit-Learn 有Imputer类可以实现。

方案2:用矩阵填充或其他模型来处理缺失值,复杂。

特征管道

如果经常需要手动应用以上任意一种方法,你就会感到厌倦。尤其是多个步骤串起来使用。

1)用均值填充缺失值

2)将衍生特征转换为二次方

3)拟合线性回归模型

SciKit提供了一个管道对象。

Python数据科学手册-机器学习之特征工程的更多相关文章

  1. Python数据科学手册-机器学习:朴素贝叶斯分类

    朴素贝叶斯模型 朴素贝叶斯模型是一组非常简单快速的分类方法,通常适用于维度非常高的数据集.因为运行速度快,可调参数少.是一个快速粗糙的分类基本方案. naive Bayes classifiers 贝 ...

  2. Python数据科学手册-机器学习介绍

    机器学习分为俩类: 有监督学习 supervised learning 和 无监督学习 unsupervised learning 有监督学习: 对数据的若干特征与若干标签之间 的关联性 进行建模的过 ...

  3. Python数据科学手册-机器学习: 流形学习

    PCA对非线性的数据集处理效果不太好. 另一种方法 流形学习 manifold learning 是一种无监督评估器,试图将一个低维度流形嵌入到一个高纬度 空间来描述数据集 . 类似 一张纸 (二维) ...

  4. Python数据科学手册-机器学习之模型验证

    模型验证 model validation 就是在选择 模型 和 超参数 之后.通过对训练数据进行学习.对比模型对 已知 数据的预测值和实际值 的差异. 错误的模型验证方法. 用同一套数据训练 和 评 ...

  5. Python数据科学手册-机器学习: k-means聚类/高斯混合模型

    前面学习的无监督学习模型:降维 另一种无监督学习模型:聚类算法. 聚类算法直接冲数据的内在性质中学习最优的划分结果或者确定离散标签类型. 最简单最容易理解的聚类算法可能是 k-means聚类算法了. ...

  6. Python数据科学手册-机器学习: 主成分分析

    PCA principal component analysis 主成分分析是一个快速灵活的数据降维无监督方法, 可视化一个包含200个数据点的二维数据集 x 和 y有线性关系,无监督学习希望探索x值 ...

  7. Python数据科学手册-机器学习: 决策树与随机森林

    无参数 算法 随机森林 随机森林是一种集成方法,集成多个比较简单的评估器形成累计效果. 导入标准程序库 随机森林的诱因: 决策树 随机森林是建立在决策树 基础上 的集成学习器 建一颗决策树 二叉决策树 ...

  8. Python数据科学手册-机器学习: 支持向量机

    support vector machine SVM 是非常强大. 灵活的有监督学习算法, 可以用于分类和回归. 贝叶斯分类器,对每个类进行了随机分布的假设,用生成的模型估计 新数据点 的标签.是属于 ...

  9. Python数据科学手册-机器学习:线性回归

    朴素贝叶斯是解决分类任务的好起点,线性回归是解决回归任务的好起点. 简单线性回归 将数据拟合成一条直线. y = ax + b , a 是斜率, b是直线截距 原始数据如下: 使用LinearRegr ...

随机推荐

  1. 从20s优化到500ms,我用了这三招

    前言 接口性能问题,对于从事后端开发的同学来说,是一个绕不开的话题.想要优化一个接口的性能,需要从多个方面着手. 其实,我之前也写过一篇接口性能优化相关的文章<聊聊接口性能优化的11个小技巧&g ...

  2. NC14380 位数差

    NC14380 位数差 题目 题目描述 给一个数组 \({a}\) ,定义 \(h(a,b)\) 为在十进制下 \(a + b\) 与 \(a\) 的位数差,求 \(\displaystyle\sum ...

  3. go-zero微服务实战系列(十一、大结局)

    本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很难写出自己满意的文章,大家看 ...

  4. Hash 哈希表和算法思路详解

    概述 哈希表是一种可以满足快速查找数据结构,时间复杂度接近O(1). 哈希函数是无限集到有限集的映射. 处理数据量大,查找效率要求高时推荐使用hash容器. 问题: 什么情况下考虑使用哈希容器? 常用 ...

  5. go grpc: connection reset by peer 的一种解决方案

    最近添哥一直反映,他手下的设备以grpc stream的方式向我服务端发送数据.偶然会收到错误.现象如下: 连接已经建立了一段时间,正常使用. 突然client.Send 返回 eof. 客户端有报错 ...

  6. LDAP+Gitea统一认证Git服务器账户管理openLdap和微软的ad

    很多时候我们需要管理多个内容管理系统,比如Jira.Jenkins.GitEA/Gitlab等等各种管理系统,我们需要每一套管理系统每个人都管理一套密码,每套系统每套密码简直是一种灾难,于是LDAP可 ...

  7. centos 7系统安装

    1.打开VMware软件,点击创建虚拟机,默认选择,点击下一步 2.选择稍后安装,点击下一步 3.在Linux系统中选择CentOS 7 64位,点击下一步 4.选择好安装位置后,点击下一步 5.选择 ...

  8. 迭代器和增强for循环

    iterator 迭代:即Collection集合元素的通过获取方法,在获取元素之前先要判断集合中有没有元素,如果有就把这个元素取出来,然后在判断,如果还有就再去除卡u,一直把集合中的所有元素全部拿出 ...

  9. Spring源码学习笔记9——构造器注入及其循环依赖

    Spring源码学习笔记9--构造器注入及其循环依赖 一丶前言 前面我们分析了spring基于字段的和基于set方法注入的原理,但是没有分析第二常用的注入方式(构造器注入)(第一常用字段注入),并且在 ...

  10. 在半小时内从无到有开发并调试一款Chrome扩展(Chrome插件/谷歌浏览器插件)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_120 就在不久之前,我们目前这个毕业班的班长那日同学和我说,他正在公司开发Chrome扩展,看起来很高大上的技术,实际开发却非常简 ...