在导入数据、理解数据之后就需要对数据做进一步的处理,这一步的处理称为数据预处理。
数据预处理大致分为3个步骤,我们需要熟知的是数据的转换步骤:
其中数据转换有以下几种方法:
在这里,我们依旧使用pima indians 印第安人医疗数据来做数据预处理。
# 数据导入
import pandas as pd
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
df=pd.read_csv('pima_data.csv',names=names)
print(df.head())
# 将数据切分为特征集和标签集
X=df.iloc[:,:-1].values
Y=df.iloc[:,-1].values
通过将数据转换到某一指定范围(0和1)之间的值,达到调整数据尺度的目的。
# 数据转换 ---调整数据尺度
from sklearn.preprocessing import MinMaxScaler
import numpy as np
mms=MinMaxScaler(feature_range=(0,1))
newX=mms.fit_transform(X)
# 设置精确度到小数点后3位
np.set_printoptions(precision=3)
print("未调整数据尺度:\n",X)
print("已调整数据尺度:\n",newX)
正态化数据是有效处理符合高斯分布数据的方法,输出结果以0位中位数,方差为1.
# 数据转换 ---正态化数据
from sklearn.preprocessing import StandardScaler
import numpy as np
ss_X=StandardScaler()
newX=ss_X.fit_transform(X)
# 设置精确度到小数点后3位
np.set_printoptions(precision=3)
print("未正态化数据:\n",X)
print("已正态化数据:\n",newX)
标准化数据处理是将每一行的数据的距离处理为1,又称为归一化处理,适合处理稀疏数据(具有很多为0的数据)。归一化处理的数据对使用权重输入的神经网络和使用距离的K近邻算法的准确度有显著提升。
# 数据转换 ---标准化数据
from sklearn.preprocessing import Normalizer
import numpy as np
nm_X=Normalizer()
newX=nm_X.fit_transform(X)
# 设置精确度到小数点后3位
np.set_printoptions(precision=3)
print("未标准化数据:\n",X)
print("已标准化数据:\n",newX)
二值数据是使用阈值将数据转化为二值,大于阈值为1,小于阈值为0.
# 数据转换 ---二值化数据
from sklearn.preprocessing import Binarizer
import numpy as np
bz_X=Binarizer(threshold=0.0)
newX=bz_X.fit_transform(X)
# 设置精确度到小数点后3位
np.set_printoptions(precision=3)
print("未二值化数据:\n",X)
print("已二值化数据:\n",newX)