Sklearn数据预处理与特征工程

目录

1、数据与处理与特征工程概述

2、Sklearn数据预处理之Preprocessing & Impute

3、Sklearn特征选择feature_selection

4、总结


1、概述:

数据预处理与特征工程是数据建模前流程,数据不给力,再好的算法都没用。数据决定了模型的上限。算法只是无限逼近这个上限。

特征预处理与特征工程

Sklearn中的数据预处理和特征工程核心模块:

模块 preprocessing:几乎包含数据预处理的所有内容。

模块 impute:填补缺失值专用。

模块 feature_selection:包括特征选择的各种方法实践。


2、Sklearn数据预处理之Preprocessing & Impute

数据无量纲化:在机器学习算法实践中,我们往往有着将数据转换到同一规格或不同分布的数据转换到某个特定的分布的需求,这种需求称为将数据“无量纲化”。无量纲化可以使矩阵和梯度为核心的算法中,加快算法求解速度,使算法尽快收敛,而在距离计算为核心的算法中,无量纲化可以帮助我们提升模型精度,避免某一个取值过大的特征对距离计算公式造成影响。(决策树和树的集成算法除外,不需要无量纲化,均能将任意数据处理的很好)

无量纲化可以是线性也可以是非线性的。线性无量纲化包括:中心化(Zero-centered或者Mean-subtraction)处理和缩放处理(scale)。中心化的本质是让所有记录减去一个固定值,即让样本数据平移到某个位置。缩放的本质是通过除以一个固定值,将数据固定在某一个范围之中,取对数也是一种缩放处理。

preprocessing.MinMaxScaler:当数据(x)按照最小值中心化后,再按极差(最大值-最小值)缩放,数据移动了最小值个单位,并且会被收敛到【0-1】之间,而这个过程叫做数据归一化(Normalization,又称Min-Max Scaling),归一化的数据服从正态分布。

公式如下:x^*=\frac{x-min(x)}{max(x)-min(x)}

preprocessing.StandardScaler:当数据(x)按均值(\mu )中心化后,再按标准差(\delta )缩放,数据就会服从均值为0,方差为1的正态分布(即标准正态分布),而这个过程,就叫做数据标准化(Standardization,又称Z-score normalization)。

公式如下:x^*=\frac{x-\mu }{\sigma }

StandardScaler和MinMaxScaler选哪个?

两种归一化方法的主要区别在于,如果数据集比较小,且相对噪声少,数据跨度不大时,采用MinMaxScaler,如果数据量较大,维度较多,一般采用后者进行归一化。

impute.SimpleImputer:用于缺失值处理。

处理分类特征:

preprocessing.OneHotEncoder:特征专用,独热编码,创建哑变量(处理名义变量)。

preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类数值。

preprocessing.LabelEncoder:标签专用,能够将分类转换为分类数值。

三者区别:独热编码主要处理无序的名义变量,而OrdinalEncoder主要处理有距变量(变量取值之间有一定的计算关系),LabelEncoder处理有序分类变量。

处理连续型特征:二值化与分段(分箱)

sklearn.preprocessing.Binarizer : 根据阈值将数据二值化为(0或1),用于处理连续型变量。

preprocessing.KBinsDiscretizer:这是将连续型的变量划分为分类变量的类,能够将连续型变量排序分箱后编码。


3、Sklearn特征选择feature_selection

Filter过滤法:过滤法的主要对象是需要遍历特征或升维的算法们,而过滤法的主要目的是在维持算法表现的前提下,帮助算法降低它们的计算成本。

1、方差过滤(VarianceThreshold) :通过特征本身的方差来筛选特征的类。比如:特征本身的方差较小,表示这个特征上基本上没有差异,或许大部分特征值都相同,说明这个特征对样本区分没什么作用。因此要消除方差为0的特征

说明:方差过滤法有可能将有效特征过滤掉,导致模型效果变差;方差过滤的阈值一般设置比较小的值,对明显不重要的特征进行预筛选,然后继续选择其他更优的特征选择方法继续消减特征数量。

2、相关性过滤:方差选择之后,就是特征相关性问题了。我们希望选择与标签相关性强的特征,这样的特征能够为我们提供大量信息。如果特征与标签无关,不仅会白白浪费计算内存,还有可能为模型引入噪音。在Sklearn中有三种常用的方法来判断特征与标签之间的相关性:卡方,F检验,互信息。

    a、卡方过滤:卡方过滤是专门针对离散型标签(即分类问题)的相关性过滤。卡方检验类feature_selection.chi2计算每个非负特征和标签之间的卡方统计量,并依照卡方统计量由高到低为特征排名。再结合feature_selection.SelectKBest这个可以输入“评分标准”来选出前K个分数最高的特征的类,我们可以借此去除最可能独立于标签,与我们分类无关的标签。

    卡方检验的本质:是推测两组数据之间的差异,其检验原假设是“两组数据是相互独立的”。卡方检验返回卡方值和P值两个统计量。其中卡方值很难界定有效范围,我们一般使用P值,0.05或0.01作为判断边界:我们希望选择卡方值很大,p值小于0.05的特征,即和标签是相关的特征

    b、F检验:又称ANOVA,方差齐性检验,是用来捕捉每个特征与标签之间的线性关系的过滤方法。

F检验在数据服从正态分布时效果会非常稳定,因此在使用F检验时,会先将数据转换成服从正态分布的方式。F检验的本质上是寻找两组数据之间的线性关系。返回F和P两个统计量,和卡方检验一样我们希望选取P值小于0.05或0.01的特征,这些特征与标签是有显著线性相关的。

    c、互信息:互信息法是用来捕捉每个特征与标签之间的任意关系(包括线性和非线性关系)的过滤方法。与F检验类似,既可以做分类又可以做回归。参数和用法与F检验一模一样,但功能更强大,互信息既可以检测出线性关系,也可以找出非线性关系。

互信息的返回值是“每个特征与目标之间的互信息量的估计”,这个估计量在【0-1】之间,为0表示两个变量独立,为1表示两个变量完全相关。

Embedded嵌入法:嵌入法是一种基于算法自己做决定选择某些重要度高的特征(通过相关性过滤无关特征和通过方差过滤掉无区分度特征),因此嵌入法是过滤法的进化版。

feature_selection.SelectFromModel

过滤法使用统计量可以使用统计知识和常识查找范围过滤特征,而嵌入法通过权值系数很难界定特征的重要度阈值,并且其计算速度也会和应用的算法有很大的关系。如果采用计算量大,计算缓慢的算法,嵌入法本身也会非常耗时耗力。并且,特征选择过后,还是需要自己来评估模型。

Wrapper包装法:包装法也是一个特征选择和算法训练同时进行的方法,与嵌入法十分相似,它也是依赖于算法自身的选择,比如coef_属性或feature_importances_属性来完成特征选择。但不同的是,我们往往使用一个目标函数作为黑盒来帮助我们选取特征,而不是自己输入某个评估指标或统计量的阈值。

feature_selection.RFE

包装法效果是所有特征选择方法中最利于提升模型表现的,它可以使用很少特征达到很优秀的效果。除此之外,在特征数目相同时,包装法和嵌入法的效果能够匹敌,不过它比嵌入法算得更见缓慢,所以也不适用于太大型的数据。相比之下,包装法是最能保证模型效果的特征选择方法。


4、总结:经验来说,过滤法更快速,但更粗糙。包装法和嵌入法更精确,比较适合具体到算法去调整,但计算量比较大,运行时间长。当数据量很大的时候,优先使用方差过滤和互信息法调整,再上其他特征选择方法。使用逻辑回归时,优先使用嵌入法。使用支持向量机时,优先使用包装法。迷茫的时候,从过滤法走起,看具体数据具体分析。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335