首页 技术 正文
技术 2022年11月18日
0 收藏 395 点赞 4,171 浏览 1913 个字

在机器学习任务中,经常会对数据进行预处理.如尺度变换,标准化,二值化,正规化.至于采用哪种方法更有效,则与数据分布和采用算法有关.不同算法对数据的假设不同,可能需要不同的变换,而且有时无需进行变换,也可能得到相对更好的效果.因此推荐使用多种数据变换方式,用多个不同算法学习和测试,选择相对较好的变换方式和算法.

下面对在 Python scikit-learn 库(也称 sklearn 库)中的预处理过程进行介绍:

1. 加载数据集;2. 将数据集分为用于机器学习的输入变量和输出变量;3. 对输入变量进行变换(或预处理);4. 显示变换结果(可选).

本文采用 scikit-learn 库自带的鸢尾花数据集(Iris Plants Database)作为示例.

首先,加载数据集,获取输入变量 X 和输出变量 y ,示例代码如下:

from sklearn import datasets
import numpy as npdata = datasets.load_iris()
X, y = data.data, data.targetnp.set_printoptions(precision=3)
print ("\n" "Preprocess input variables: " "\n")
print ("Raw Data: ")
print (X[:5, :])

然后,变换输入变量 X (类型为 <type ‘numpy.ndarray’>),具体变换如下:

尺度变换

将输入变量变换到某一范围,如 0 ~ 1 区间.在 sklearn 库中,使用 MinMaxScaler 类实现.常用于类似梯度下降的优化算法,回归和神经网络中的加权输入,以及类似 K 近邻的距离度量.示例代码如下:

from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler(feature_range=(0,1))
rescaledX = scaler.fit_transform(X)# Print transformed data
print ("\nRescaled Data: ")
print(rescaledX[0:5,:])

标准化

通常适用于高斯分布的输入变量.具体来说,将输入变量中的每个属性值减去其平均值,然后除以标准差,得到标准正态分布的属性值.在 sklearn库中,使用 StandardScaler 类实现.常用于假定输入变量高斯分布的线性回归,Logistic回归和线性判决分析.

from sklearn.preprocessing import StandardScalerscaler = StandardScaler().fit(X)
standardizedX = scaler.transform(X)
print ("\nStandardized Data: ")
print (standardizedX[0:5,:])

正规化

将输入变量变换为具有单位范数长度的数据.常用的范数有L1,L2,详见我之前的博文 “数据正规化 (data normalization) 的原理及实现 (Python sklearn)“. 在 sklearn 库中,使用 Normalizer 类实现.常用于含有许多 0 的稀疏数据集,像神经网络的采用加权输入的算法和像 K 近邻采用距离度量的算法.

from sklearn.preprocessing import Normalizerscaler = Normalizer().fit(X)
normalizedX = scaler.transform(X)print ("\nNormalized Data: ")
print (normalizedX[0:5,:])

二值化

使用门限值,将输入数据二值化.当输入变量值大于门限值时,变换为 1;当输入变量值小于或等于门限值时,变换为 0.在 sklearn 库中,使用 Binarizer 类实现.常用于获取清晰的值的概率,产生新的有意义的属性的特征工程.

from sklearn.preprocessing import Binarizerbinarizer = Binarizer(threshold=0.0).fit(X)
binaryX = binarizer.transform(X)print ("\nBinarized Data: ")
print (binaryX[0:5,:])

参考资料

Jason Brownlee. How To Prepare Your Data For Machine Learning in Python with Scikit-Learn.

https://machinelearningmastery.com/prepare-data-machine-learning-python-scikit-learn/

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297