Python下的机器学习工具sklearn--数据预处理
1.数据标准化(Standardization or Mean Removal and Variance Scaling)
进行标准化缩放的数据均值为0,具有单位方差。
from sklearn import preprocessing
X = [[1., -1., 2.],
[2., 0., 0.],
[0., 1., -1.]]
X_scaled = preprocessing.scale(X)
print X_scaled
#[[ 0. -1.22474487 1.33630621]
# [ 1.22474487 0. -0.26726124]
# [-1.22474487 1.22474487 -1.06904497]]
print X_scaled.mean(axis = 0)
print X_scaled.std(axis = 0)
#[ 0. 0. 0.]
#[ 1. 1. 1.]
同样我们也可以通过preprocessing模块提供的Scaler(StandardScaler 0.15以后版本)工具类来实现这个功能:
scaler = preprocessing.StandardScaler().fit(X)
print scaler
#StandardScaler(copy=True, with_mean=True, with_std=True)
print scaler.mean_
#[ 1. 0. 0.33333333]
print scaler.scale_#之前版本scaler.std_
#[ 0.81649658 0.81649658 1.24721913]
print scaler.transform(X)
#[[ 0. -1.22474487 1.33630621]
# [ 1.22474487 0. -0.26726124]
# [-1.22474487 1.22474487 -1.06904497]]
注:上述代码与下面代码等价
scaler = preprocessing.StandardScaler().fit_transform(X)
print scaler
#[[ 0. -1.22474487 1.33630621]
# [ 1.22474487 0. -0.26726124]
# [-1.22474487 1.22474487 -1.06904497]]
print scaler.mean(axis = 0)
#[ 0. 0. 0.]
print scaler.std(axis = 0)
#[ 1. 1. 1.]
2.数据规范化(Normalization)
把数据集中的每个样本所有数值缩放到(-1,1)之间。
X = [[1., -1., 2.],
[2., 0., 0.],
[0., 1., -1.]]
X_normalized = preprocessing.normalize(X)
print X_normalized
#[[ 0.40824829 -0.40824829 0.81649658]
# [ 1. 0. 0. ]
# [ 0. 0.70710678 -0.70710678]]
等价于:
normalizer = preprocessing.Normalizer().fit(X)
print normalizer
#Normalizer(copy=True, norm='l2')
print normalizer.transform(X)
#[[ 0.40824829 -0.40824829 0.81649658]
# [ 1. 0. 0. ]
# [ 0. 0.70710678 -0.70710678]]
注:上述代码与下面代码等价
normalizer = preprocessing.Normalizer().fit_transform(X)
print normalizer
#[[ 0.40824829 -0.40824829 0.81649658]
# [ 1. 0. 0. ]
# [ 0. 0.70710678 -0.70710678]]
3.二进制化(Binarization)
将数值型数据转化为布尔型的二值数据,可以设置一个阈值(threshold)。
X = [[1., -1., 2.],
[2., 0., 0.],
[0., 1., -1.]]
binarizer = preprocessing.Binarizer().fit(X) # 默认阈值为0.0
print binarizer
#Binarizer(copy=True, threshold=0.0)
print binarizer.transform(X)
#[[ 1. 0. 1.]
# [ 1. 0. 0.]
# [ 0. 1. 0.]] binarizer = preprocessing.Binarizer(threshold=1.1) # 设定阈值为1.1
print binarizer.transform(X)
#[[ 0. 0. 1.]
# [ 1. 0. 0.]
# [ 0. 0. 0.]]
4.标签预处理(Label preprocessing)
4.1)标签二值化(Label binarization)
LabelBinarizer通常用于通过一个多类标签(label)列表,创建一个label指示器矩阵.
lb = preprocessing.LabelBinarizer()
print lb.fit([1, 2, 6, 4, 2])
#LabelBinarizer(neg_label=0, pos_label=1, sparse_output=False)
print lb.classes_
#[1 2 4 6]
print lb.transform([1, 6])
#[[1 0 0 0]
# [0 0 0 1]]
4.2)标签编码(Label encoding)
le = preprocessing.LabelEncoder()
print le.fit([1, 2, 2, 6])
#LabelEncoder()
print le.classes_
#[1 2 6]
print le.transform([1, 1, 2, 6])
#[0 0 1 2]
print le.inverse_transform([0, 0, 1, 2])
#[1 1 2 6]
也可以用于非数值类型的标签到数值类型标签的转化:
le = preprocessing.LabelEncoder()
print le.fit(["paris", "paris", "tokyo", "amsterdam"])
#LabelEncoder()
print list(le.classes_)
#['amsterdam', 'paris', 'tokyo']
print le.transform(["tokyo", "tokyo", "paris"])
#[2 2 1]
print list(le.inverse_transform([2, 2, 1]))
#['tokyo', 'tokyo', 'paris']
Python下的机器学习工具sklearn--数据预处理的更多相关文章
- sklearn数据预处理
一.standardization 之所以标准化的原因是,如果数据集中的某个特征的取值不服从标准的正太分布,则性能就会变得很差 ①函数scale提供了快速和简单的方法在单个数组形式的数据集上来执行标准 ...
- python中常用的九种数据预处理方法分享
Spyder Ctrl + 4/5: 块注释/块反注释 本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(St ...
- sklearn数据预处理-scale
对数据按列属性进行scale处理后,每列的数据均值变成0,标准差变为1.可通过下面的例子加深理解: from sklearn import preprocessing import numpy as ...
- [Python数据挖掘]第4章、数据预处理
数据预处理主要包括数据清洗.数据集成.数据变换和数据规约,处理过程如图所示. 一.数据清洗 1.缺失值处理:删除.插补.不处理 ## 拉格朗日插值代码(使用缺失值前后各5个未缺失的数据建模) impo ...
- 机器学习实战:数据预处理之独热编码(One-Hot Encoding)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 机器学习——Day 1 数据预处理
写在开头 由于某些原因开始了机器学习,为了更好的理解和深入的思考(记录)所以开始写博客. 学习教程来源于github的Avik-Jain的100-Days-Of-MLCode 英文版:https:// ...
- sklearn 数据预处理1: StandardScaler
作用:去均值和方差归一化.且是针对每一个特征维度来做的,而不是针对样本. [注:] 并不是所有的标准化都能给estimator带来好处. “Standardization of a dataset i ...
- 数据预处理及sklearn方法实现
1.标准化(中心化) 在许多机器学习执行前,需要对数据集进行标准化处理.因为很对算法假设数据的特征服从标准正态分布.所以如果不对数据标准化,那么算法的效果会很差. 例如,在学习算法的目标函数,都假设数 ...
- [Python]-pandas模块-机器学习Python入门《Python机器学习手册》-02-加载数据:加载文件
<Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...
随机推荐
- oracle数据块的大小
标准数据块用于临时表空间和系统表空间,同时也是一个表空间数据块的默认值.标准数据块的大小是在创建数据库时由参数DB_BLOCK_SIZE确定的.若要改变这一设置必须重建数据库. DB_CACHE_SI ...
- redis怎么动态添加内存,动态配置,无需重启。
在redis的使用过程中,有时候需要急需修改redis的配置,比如在业务运行的情况下,内存不够怎么办,这时要么赶紧删除无用的内存,要么扩展内存.如果有无用的内容可删除那么所有问题都已经解决.如果内容都 ...
- Python第一印象,大法好!
为了用flask开发web应用,这两天就开始看了一点点Python.还没看到用Python写网站后台的那部分,就被其强大的数据处理能力和语法的灵活性吸引.肯定是我少见多怪,不过看到人家灵活使用Pyth ...
- 【maven学习笔记】 01 初见
想学maven,maven是ant的替代品. 1:下载 maven是apache的顶级项目,在http://maven.apache.org/可以直接下载. 2:环境变量 下载完要配置环境变量,把bi ...
- 恶补ASP.NET基础【1】枚举和结构
有时我们希望变量提取的是一个固定集合中的值,此时就可以用枚举类型, 例: enum OpenMode : byte { 新增=, 编辑=, 查看= } class Program { static v ...
- Nginx Upload Module 上传模块
传统站点在处理文件上传请求时,普遍使用后端编程语言处理,如:Java.PHP.Python.Ruby等.今天给大家介绍Nginx的一个模块,Upload Module上传模块,此模块的原理是先把用户上 ...
- 如何解决自定义ToolBar起始位置的空格(左对齐)问题
最近在做项目的时候,与到自定义toolbar的问题,自定义toolbar布局之类的并不是很难,但是自定义布局完成之后,控件总是无法左对齐,这极大的影响了App的美观. 结果谷歌后在Stack Over ...
- SpringMVC之数据绑定(转)
到目前为止,请求已经能交给我们的处理器进行处理了,接下来的事情是要进行收集数据啦,接下来我们看看我们能从请求中收集到哪些数据, 1.@RequestParam绑定单个请求参数值: 2.@PathVar ...
- USB mass storage协议
这一节主要把在实现“linux模拟U盘功能”过程中的一些调试过程记录下来,并加以解析. 一.背景知识 1.USB Mass Storage类规范概述 USB 组织在univers ...
- git 之别名配置
在git操作中有很多命令我们自己可以起别名,以提高操作效率. 1. 配置方式 1)项目级别的配置,仅对当前项目生效(将写入到.git/config文件中) $ git config --glob ...