Python下的机器学习工具scikit-learn--数据预处理

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‘]
时间: 2024-10-18 23:40:14

Python下的机器学习工具scikit-learn--数据预处理的相关文章

2018年最受欢迎的五大机器学习工具和五大数据学习工具

2018年将会是人工智能和机器学习快速发展的一年,有专家表示:相较之下Python比Java更加接地气,也自然而然地成为机器学习的首选语言 在数据科学方面,Python的语法与数学语法最为接近,因此是数学家或经济学家等专业人士最容易理解和学习的语言.本文将罗列机器学习和数据科学应用程序中最有用的十大Python工具 五大机器学习工具 1.Shogun SHOGUN是一个机器学习工具箱,专注于支持向量机(SVM)的学习工具箱.它是用C++编写的,早在1999年就已经创建,是最古老的机器学习工具之一

机器学习工具

机器学习工具 参考网站: https://www.zhihu.com/question/20472776(知乎:学习机器学习有哪些好工具推荐?) http://blog.csdn.net/myarrow/article/details/50608334(CSDN:机器学习工具汇总) 平台VS库 机器学习平台 机器学习平台提供了从头到尾完成一个机器学习项目的功能.也就是,数据分析,数据准备,建模和算法评估及选择. 机器学习平台的特征有: 它们提供了机器学习项目中每一个过程所需要的功能. 界面可以是

数据预处理速度高倍提升,3行python代码简单搞定!

Python 是机器学习领域内的首选编程语言,它易于使用,也有很多出色的库来帮助你更快处理数据.但当我们面临大量数据时,一些问题就会显现-- 目前,大数据(Big Data)这个术语通常用于表示包含数十万数据点的数据集.在这样的尺度上,工作进程中加入任何额外的计算都需要时刻注意保持效率.在设计机器学习系统时,数据预处理非常重要--在这里,我们必须对所有数据点使用某种操作. 在默认情况下,Python 程序是单个进程,使用单 CPU 核心执行.而大多数当代机器学习硬件都至少搭载了双核处理器.这意味

Python语言下的机器学习库

Python是最好的编程语言之一,在科学计算中用途广泛:计算机视觉.人工智能.数学.天文等.它同样适用于机器学习也是意料之中的事. 当然,它也有些缺点:其中一个是工具和库过于分散.如果你是拥有unix思维(unix-minded)的人,你会觉得每个工具只做一件事并且把它做好是非常方便的.但是你也需要知道不同库和工具的优缺点,这样在构建系统时才能做出合理的决策.工具本身不能改善系统或产品,但是使用正确的工具,我们可以工作得更高效,生产率更高.因此了解正确的工具,对你的工作领域是非常重要的. 这篇文

Python之扩展包安装(scikit learn)

scikit learn 是Python下开源的机器学习包.(安装环境:win7.0 32bit和Python2.7) Python安装第三方扩展包较为方便的方法:easy_install + packages name 在官网 https://pypi.python.org/pypi/setuptools/#windows-simplified 下载名字为 的文件. 在命令行窗口运行 ,安装后,可在python2.7文件夹下生成Scripts文件夹.把路径D:\Python27\Scripts

你不得不看的Python机器学习工具

IEEE Spectrum排行榜第一,Skill UP排名第一的开发工具,Stack Overflow年度调查中程序员最感兴趣的选择,Stack Overflow 6月份访问量最多的编程语言......没错,这些盛誉都指向了一个编程语言--Python. Python在科学计算中用途广泛:计算机视觉.人工智能.数学.天文等.它同样适用于机器学习也是意料之中的事.这里将列举并描述Python的最有用的机器学习工具和库. 另外,尽管有些模块可以用于多种机器学习任务,在这里只列出主要焦点在机器学习的库

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import numpy as np from sklearn.pipeline import Pipeline from sklearn.linear_model import SGDClassifier from sklearn.grid_search import GridSearchCV from sk

Python下pip pydoc 2to3等工具

Python自带库安装工具pip 安装pip工具,下载源码包 https://pypi.python.org/pypi/pip#downloads 解压源码包:tar zxvf pip-1.5.6.tar.gz 安装命令: cd pip-1.5.6 python setup.py install 安装后的工具path:PythonXX/Scripts,在window下有必要将此路径加入环境变量path中 使用pip: pip --help 查看pip的帮助文档 pip list 查看已安装的pa

python大战机器学习——数据预处理

数据预处理的常用流程: 1)去除唯一属性 2)处理缺失值 3)属性编码 4)数据标准化.正则化 5)特征选择 6)主成分分析 (1)去除唯一属性 在获取的数据集中,经常会遇到唯一属性.这些属性通常是添加的一些di属性,如存放在数据库中自增的主键.这些属性并不能刻画样本自身的分布规律,所以只需要简单地删除这些属性即可. (2)处理缺失值的三种方法 1)直接使用含有缺失值的特征  2)删除含有缺失值的特征  3)缺失值补全 1)直接使用:对于某些算法可以直接使用含有缺失值的情况.如决策树. 2)特征