sklearn中常用的数据预处理方法

常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍;

1. 标准化(Standardization or Mean Removal and Variance Scaling)

变换后各维特征有0均值,单位方差。也叫z-score规范化(零均值规范化)。计算方式是将特征值减去均值,除以标准差。

1
sklearn.preprocessing.scale(X)

一般会把train和test集放在一起做标准化,或者在train集上做标准化后,用同样的标准化器去标准化test集,此时可以用scaler

1
2
3
scaler = sklearn.preprocessing.StandardScaler().fit(train)
scaler.transform(train)
scaler.transform(test)

实际应用中,需要做特征标准化的常见情景:SVM

2. 最小-最大规范化

最小-最大规范化对原始数据进行线性变换,变换到[0,1]区间(也可以是其他固定最小最大值的区间)

1
2
min_max_scaler = sklearn.preprocessing.MinMaxScaler()
min_max_scaler.fit_transform(X_train)

3.规范化(Normalization)

规范化是将不同变化范围的值映射到相同的固定范围,常见的是[0,1],此时也称为归一化。《机器学习》周志华

将每个样本变换成unit norm。

1
2
X = [[ 1, -1, 2],[ 2, 0, 0], [ 0, 1, -1]]
sklearn.preprocessing.normalize(X, norm='l2')

得到:

1
array([[ 0.40, -0.40, 0.81], [ 1, 0, 0], [ 0, 0.70, -0.70]])

可以发现对于每一个样本都有,0.4^2+0.4^2+0.81^2=1,这就是L2 norm,变换后每个样本的各维特征的平方和为1。类似地,L1 norm则是变换后每个样本的各维特征的绝对值和为1。还有max norm,则是将每个样本的各维特征除以该样本各维特征的最大值。

在度量样本之间相似性时,如果使用的是二次型kernel,需要做Normalization

4. 特征二值化(Binarization)

给定阈值,将特征转换为0/1

1
2
binarizer = sklearn.preprocessing.Binarizer(threshold=1.1)
binarizer.transform(X)

5. 标签二值化(Label binarization)

1
lb = sklearn.preprocessing.LabelBinarizer()

6. 类别特征编码

有时候特征是类别型的,而一些算法的输入必须是数值型,此时需要对其编码。

1
2
3
enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
enc.transform([[0, 1, 3]]).toarray()  #array([[ 1., 0., 0., 1., 0., 0., 0., 0., 1.]])

上面这个例子,第一维特征有两种值0和1,用两位去编码。第二维用三位,第三维用四位。

7.标签编码(Label encoding)

1
2
3
4
5
6
le = sklearn.preprocessing.LabelEncoder()  
le.fit([1, 2, 2, 6]) 
le.transform([1, 1, 2, 6])  #array([0, 0, 1, 2]) 
#非数值型转化为数值型
le.fit(["paris", "paris", "tokyo", "amsterdam"])
le.transform(["tokyo", "tokyo", "paris"])  #array([2, 2, 1])

8.特征中含异常值时

1
sklearn.preprocessing.robust_scale

9.生成多项式特征

这个其实涉及到特征工程了,多项式特征/交叉特征。

1
2
poly = sklearn.preprocessing.PolynomialFeatures(2)
poly.fit_transform(X)

原始特征:

转化后:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SharePoint Server 2016 PWA(Project web app) 被变为只读模式

今天有同事反应了一个状况,我们SharePoint 2016里面集成的Project Web App(以下简称PWA)变成 read-only 只读模式了!今天就给大家分享一下我的排查过程,供大家参考。 整个过程我一共使用了五种办法,结果最后一种才生效&#xff0c…

集成学习之参数调整策略

1 Random Forest和Gradient Tree Boosting参数详解 在sklearn.ensemble库中,我们可以找到Random Forest分类和回归的实现:RandomForestClassifier和RandomForestRegression,Gradient Tree Boosting分类和回归的实现:GradientBoost…

Random Forest算法中的参数详解

本篇不是介绍RF的,关于RF网上有很多通俗易懂的解释 西瓜书与统计学习方法等很多教材中的解释也都足够 本篇仅针对如何使用sklearn中的RandomForestClassifier作记录 一、代码怎么写 [python] view plaincopy print?class sklearn.ensemble.RandomForestClassifier(…

给未来的自己一封信计算机,给未来的自己的一封信范文(精选5篇)

给未来的自己的一封信范文(精选5篇)在日常生活或是工作学习中,大家总免不了要接触或使用书信吧,书信一般包括称呼、问候语、正文、祝语、署名、日期六个部分。你知道书信怎样写才规范吗?下面是小编为大家收集的给未来的自己的一封信范文(精选…

GBDT算法简介

在网上看到一篇GBDT介绍非常好的文章,GBDT大概是非常好用又非常好用的算法之一了吧(哈哈 两个好的意思不一样) GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算…

DevExpress Chart空间Y轴归一化(线性归一化函数)

数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较…

23期PHP基础班第四天

转载于:https://www.cnblogs.com/lihang666/p/6078982.html

gojs实现最短路径寻址实例

2019独角兽企业重金招聘Python工程师标准>>> JS function init() {if (window.goSamples) goSamples(); // init for these samples -- you dont need to call thisvar $ go.GraphObject.make; // for conciseness in defining templatesmyDiagram $(go.Diagram,…

河南王牌计算机专业,河南计算机专业实力突出的7所大学,郑大位列次席,榜首实至名归...

郑州大学是省内唯一的211建设高校,整体办学实力在国内同类高校之中名列前茅,虽然没有能够在学科评估之中取得A类学科,但学校有化学、考古学、材料科学与工程等多个学科获评B,学校计算机科学与技术学科取得了C的成绩,虽…

JavaScript 实现继承的5种方式

js是一个面向对象的语言,所以具备一些面向对象的方式----------例如继承。接下来介绍5种js的继承方式.注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。 1.采用call方法改变函数上下文实现继承,原理是改变函数内部的…

初学者在python下使用Ta-lib库时遇到的一些问题及解决办法

由于Ta-lib是一款小众库,所以没有很好的API来说明其中各个函数的使用方法。无奈只能摸着石头过河,一个个试其中函数。期间遇到一些问题希望分享出来对大家有帮助。 问题描述:在使用Ta-lib库时用到的一些简单函数如SMA(),WMA(),EMA()这类方法时&#xff…

global全局变量

global全局变量 在不指向新的地址时,可以不调用global

快速入门Matplotlib

以下是原文正文: 数据的处理、分析和可视化已经成为 Python 近年来最重要的应用之一。这种现象又进一步引出“大数据”分析等类似的话题,而大数据分析在人们所能预见的诸多领域内都有广泛应用,这其中就包含笔者个人感兴趣的机器学习。 Pytho…

谷歌开源 Python Fire:可自动生成命令行接口

为什么80%的码农都做不了架构师?>>> 今天我们很高兴地宣布 Python Fire 开源。Python Fire 可从任何 Python 代码生成命令行接口(command line interfaces (CLIs)),简单地调用任意 Python 程序中的 Fire 函数以将那个…

tcp ip计算机网络协议,一篇文章带你熟悉 TCP/IP 协议-(一)

一、 计算机网络体系结构分层不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。二、 TCP/IP 基础1. TCP/IP 的具体含义从字面意义上讲&#xff…

Random Forest算法参数解释及调优

文章介绍了如何对随机森林模型进行参数调优 原文来自:http://www.analyticsvidhya.com/blog/2015/06/tuning-random-forest-model/ 为什么要调整机器学习算法? 一个月以前,我在kaggle上参加了一个名为TFI的比赛。 我第一次提交的结果在50%…

Random Forest随机森林概述

引言 在机器学习中,随机森林由许多的决策树组成,因为这些决策树的形成采用了随机的方法,因此也叫做随机决策树。随机森林中的树之间是没有关联的。当测试数据进入随机森林时,其实就是让每一颗决策树进行分类,最后取所…

kd tree学习笔记 (最近邻域查询)

https://zhuanlan.zhihu.com/p/22557068 http://blog.csdn.net/zhjchengfeng5/article/details/7855241 KD树在算法竞赛中主要用来做各种各样的平面区域查询,包含则累加直接返回,相交则继续递归,相离的没有任何贡献也直接返回。可以处理圆&am…

图像影音型计算机主板选择什么,电脑主板型号在哪里看? 每日一答

电脑主板型号在哪里看?想要看主板的型号其实非常简单,一般来说,主板上都会有一个专门的身份标识,位于PCI-E显卡插槽之间,比如下方这张图,就清晰地写明了MAXIMUS X APEX的标识,熟悉的玩家一眼就能…

使用叶神模拟器无法访问本机服务器的问题(报错:java.net.ConnectException: failed to connect to /127.0.0.1 (port 5000) )

最近打算用夜神模拟器来和本机服务器做一些信息交互的功能,但是服务器搭建好了,用叶神模拟器却无法访问。折腾了大半天才发现原来是模拟器的问题。 具体过程如下: 搭建好服务器后,在本机上访问“http://127.0.0.1:5000/”&#…