关于数据预处理
在对数据进行应用之前,需要对数据进行相应的处理。数据预处理是根据数据本身的特性进行的。有缺失值的要填,有无效数据的要剔,有冗余维的要选。
数据预处理大致分为以下三个步骤:
常用的几种数据转换方法:
数据预处理一般流程
数据预处理的一般流程分为以下四步:
- 导入数据
- 按照算法的输入和输出整理数据
- 格式化输入数据
- 总结显示数据的变化
scikit-learn提供了两种标准的格式化数据的方法。利用这两种方法整理的数据,可以直接用来训练算法模型。它们分别是:
数据预处理之调整数据尺度
调整数据尺度的目的在于,让数据的各个属性都按照相同的尺度来度量数据,从而给机器学习的算法模型带来方便。该方法通常会将数据的所有属性标准化,并将数据转换成0和1之间的值。
统计学中,按照对事物描述的精确度,对所采用的尺度从低级到高级分成四个层次,分别是:
- 定类尺度:对事物类别属性的一种测度,按照事物的属性进行分组或分类
- 定序尺度:对事物之间的等级或顺序的一种测度,可以比较优劣或排序
- 定距尺度:不仅能将事物区分为不同的类型并进行排序,而且可以准确地指出类别之间的差距
- 定比尺度:比定距尺度更近一步,其差别在于它有一个固定的绝对“零”点
scikit-learn中的MinMaxScaler类可以用来调整数据尺度,将不同计量单位的数据统一成相同的尺度,从而有利于对事物的分类或分组。
以下是书中的代码及对每句对应的作用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| from pandas import read_csv from numpy import set_printoptions from sklearn.preprocessing import MinMaxScaler
filename="pima.csv"
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
data=read_csv(filename,names=names)
array=data.values
X=array[:,0:8]
Y=array[:,8]
transformer=MinMaxScaler(feature_range=(0,1))
newX=transformer.fit_transform(X)
set_printoptions(precision=3)
print(newX)
|
数据预处理之正态化数据
正态化数据是有效处理符合高斯分布的数据的方法,输出结果以0为中位数,方差为1,并作为假定数据符合高斯分布的算法的输入。
代码方面,除了在导入类库部分要import StandardScaler外,与调整数据尺度有两句变化,即:
1 2 3 4
| transformer=MinMaxScaler(feature_range=(0,1))
newX=transformer.fit_transform(X)
|
调整为
1 2 3 4
| transformer=StandardScaler().fit(x)
newX=transformer.transform(X)
|
数据预处理之标准化数据
标准化数据处理是将每一行的数据的距离处理成1的数据,又叫作“归一元”处理,适合处理稀疏数据(具有很多为0的数据)。
代码方面,除了在导入类库部分要import Normalizer外,与正态化数据有一句变化,即:
1 2
| transformer=Normalizer().fit(x)
|
数据预处理之二值数据
二值数据是使用值将数据转化为二值,大于阈值设置为1,小于阈值设置为0。这个过程被称之为二分数据或阈值转换。
代码方面,除了在导入类库部分要import Binarizer外,与正态化数据有一句变化,即:
1 2
| transformer=Binarizer(threshold=0.0).fit(x)
|