"机器学习--数据预处理"

  "机器学习--数据预处理"

Posted by Kakarotto on April 1, 2017

cogito ergo sum

一、问题描述

在使用数据对算法进行训练时,需要先对数据进行预处理。现在主要来学习一下scikit-learn中的数据预处理的方法。

二、具体方法

2.1标准化(standardization)

假设数据是存放在矩阵中,每个矩阵的行是一个数据x,列则代表数据的特征。

标准化的公式为:

$x_{mean}$代表属性的平均值,$x_{std}$代表属性的方差。

from sklearn import preprocessing
import numpy as np
x_scale=preprocessing.scale(x)

sklearn.preprocessing.scale(X, axis=0, with_mean=True,with_std=True,copy=True)
参数解释:
X:数组或者矩阵
axis:int类型,初始值为0,axis用来计算均值 means 和标准方差 standard deviations. 如果是0,则单独的标准化每个特征(列),如果是1,则标准化每个观测样本(行)。
with_mean: boolean类型,默认为True,表示将数据均值规范到0
with_std: boolean类型,默认为True,表示将数据方差规范到

2.2 特征取值缩小到(0,1)

线性放缩的公式为:

均是以特征,也就是列为单位进行线性放缩

x=preprocessing.minmax_scale(x)

2.3正则化(Normalization)

对每个样本计算其p-范数,然后对每个样本的元素除以这个数,这样每个样本的p-范数都是1

x=preprocessing.normalize(x,norm='2')

2.4二值化

将每个数据变为0或者1.

preprocessing.binarize(x,threshold=0.0)

2.5缺失值处理

许多数据集在实际使用的时候都会出现缺失值的情况。

from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
#先对imp类进行训练,通过数据。
然后使用
imp.transform(y)
对y的缺失值进行补充

后记

原文链接