快速入门特征工程

有一句话在业界广为流传:特征工程决定了模型的上界,调参决定模型能够有多逼近这个上界。

这里以sklearn为例讲讲特征工程。

一图概览特征工程

虽然说分了这么多部分,但特征工程最重要的部分还是特征处理,特征处理主要包含三个方面,特征预处理,特征选择和降维度。

数据预处理

数据预处理一方面把特征转为合适的编码喂给我们学习算法,另一方面就是把数据都转化到一个同一个规格。我们平时会用公制单位,那么对于特征也要转化到这样的公制单位。都是身高体重的数据,转化到公制下比较方便。

无量纲化

即把特征转化到“公制”。

标准化,使得特征均值为0。

from sklearn.preprocessing import StandardScaler

\[
x = \frac { x - \overline { X } } { s }
\]

归一化,使得特征为一个单位向量。

from sklearn.preprocessing import Normalizer

\[
x ^ { \prime } = \frac { x } { \sqrt { \sum _ { j } ^ { m } x [ j ] ^ { 2} } }
\]

特征编码

特征编码即将男女这样的特征进行编码,转化为01值。

二值化,设定一个阈值,大于等于阈值为一类,小于阈值为一类。

from sklearn.preprocessing import Binarizer

one-hot编码,将多分类的特征变成一个特征向量。

from sklearn.preprocessing import OneHotEncoder

特征选择

Filter

filter方法就是对特征进行评分,然后选择评分高的特征。那么既然是评分就要涉及到评分方法了。一般有四个评分方法。

  1. 方差
  • from sklearn.feature_selection import VarianceThreshold
  1. 相关系数
  • from sklearn.feature_selection import SelectKBest
  1. 卡方检验
  • from sklearn.feature_selection import SelectKBest
  1. 互信息
  • from sklearn.feature_selection import SelectKBest

详细翻阅参考。

降维

降维两种方法其实之前已经讲过了即PAC和LDA。

from sklearn.decomposition import PCA

#主成分分析法,返回降维后的数据
#参数n_components为主成分数目
PCA(n_components=2).fit_transform(iris.data)
from sklearn.lda import LDA

#线性判别分析法,返回降维后的数据
#参数n_components为降维后的维数
LDA(n_components=2).fit_transform(iris.data, iris.target)

参考

使用sklearn做单机特征工程

机器学习特征工程实用技巧大全

原文地址:https://www.cnblogs.com/nevermoes/p/feature_engineering.html

时间: 2024-11-04 10:14:29

快速入门特征工程的相关文章

Node.js【4】简介、安装和配置、快速入门

笔记来自<Node.js开发指南>BYVoid编著 第1章 Node.js简介 Node.js是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为脚本语言世界的一等公民,在服务端堪与PHP.Python.Perl.Ruby平起平坐. Node.js可以作为服务器向用户提供服务,与PHP.Python.RubyonRails相比,它跳过了Apache.Nginx等HTTP服务器,直接面向前端开发. Node.js还可以调用C/C++的代码,这样可以充分利用已有的诸多函

nodejs快速入门

目录: 编写第一个Node.js程序: 异步式I/O和事件循环: 模块和包: 调试. 1. 编写第一个Node.js程序: Node.js 具有深厚的开源血统,它诞生于托管了许多优秀开源项目的网站—— github.和大多数开源软件一样,它由一个黑客发起,然后吸引了一小拨爱好者参与贡献代码.一开始它默默无闻,靠口口相传扩散,直到某一天被一个黑客媒体曝光,进入业界视野,随后便有一些有远见的公司提供商业支持,使其逐步发展壮大. 用 Node.js 编程是一件令人愉快的事情,因为你将开始用黑客的思维和

[阿里移动推荐算法]比赛_快速入门_4_19_update_仅供参考,思维不要受局限

[这里只讲快速入门——即破题,正负样本不平衡.特征数量等问题就自己多看论文或者其他资料吧~~如果还有数据挖掘相关基础知识不了解的,建议看看<数据挖掘导论>] [以下是理解错误案例]:错误的根本原因是不能保证训练集的构建逻辑与赛题目标保持一致,不能保证训练集和测试集的构建逻辑保持一致,不能保证离线评测的逻辑和线上保持一致! 1. 有同学在构建训练集的时候,为了给样本(即ui对)标上正负,不是根据分割点之后第一天的购买情况来对分割点之前的ui进行标记,而是根据分割点之前某个时间段内的购买情况进行标

Android基础篇之Android快速入门--你必须要知道的基础

Android快速入门 1. 搭建开发环境 >解压压缩文件,得到:①Android SDK   (类似于JDK)② Eclipse  ③ADT >配置两个path环境变量:D:\adt-bundle-windows-x86\sdk\platform-tools:D:\adt-bundle-windows-x86\sdk\tools >配置基本的Eclipse的设置: 调整字体大小,字符集,配置android sdk的位置 >创建模拟器: 2. 创建第一个Android项目: Hel

CTK框架——CTK Plugin Framework快速入门

CTK框架--CTK Plugin Framework快速入门 一.CTK Plugin Framework简介 1.CTK Plugin Framework简介 CTK Plugin Framework基于Qt Plugin System和Qt Service Framework实现,并且增加了以下特性来扩展:A.插件元数据(由MANIFEST.MF文件提供):B.一个定义良好的插件生命周期和上下文:C.综合服务发现和注册:在Qt Plugin System中,插件的元数据由JSON文件提供.

笔记:Spring Cloud Zuul 快速入门

Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了所有其他微服务的实例信息,这样的设计非常巧妙的将服务治理体系中维护的实例信息利用起来,使得维护服务实例的工作交给了服务治理框架自动完成,而对路由规则的维护,默认会将通过以服务名作为 ContextPath 的方式来创建路由映射,也可以做一些特别的配置,对于签名校验.登录校验等在微服务架构中的冗余问题

定时器(Quartz)快速入门

Quartz概述 Quartz中的触发器 Quartz中提供了两种触发器,分别是CronTrigger和SimpleTrigger. SimpleTrigger 每 隔若干毫秒来触发纳入进度的任务.因此,对于夏令时来说,根本不需要做任何特殊的处理来"保持进度".它只是简单地保持每隔若干毫秒来触发一次,无论你的 SimpleTrigger每隔10秒触发一次还是每隔15分钟触发一次,还是每隔24小时触发一次. CronTrigger 在特定"格林日历"时刻触发纳入进程的

JWPlayer快速入门指南(中文)

将JW Player嵌入到网页中非常的简单,只需要进行如下3个步骤: 1.解压mediaplayer-viral.zip文件,将jwplayer.js和player.swf文件拷贝到工程中: 2.在页面引入jwplayer.js文件: <script type="text/javascript" src="/jwplayer/jwplayer.js"></script> 3.将下面代码粘贴在body标签内,如下所示: <div id=&

02_Spring控制反转案例快速入门

Spring控制反转案例快速入门 1.下载Spring最新开发包 http://www.springsource.org/download/community 下载spring3.2 的开发包 目录结构(spring-framework-3.2.0.RELEASE) * docs 存放API和 规范文档 * libs 开发jar包 * schemas 开发过程中需要导入xml的schema 约束 我们还有一个依赖包(spring-framework-3.0.2.RELEASE-dependenc