- 导入数据
- 按照算法的输入和输出整理数据
- 格式化输入数据
- 总结显示数据的变化
scikit-learn提供两种标准的格式化数据的方法:
适合和多重变换(Fit and Multiple Transform)
适合和变换组合(Combined Fit-and-Transform)
下面介绍4种scikit-learn中对数据进行预处理的方法
1.调整数据尺度
将数据按比例转换成0和1之间的数,在scikit-learn中,可以通过MinMaxScaler类来调整数据尺度
from pandas import read_csv
from numpy import set_printoptions
from sklearn.preprocessing import MinMaxScaler
# 导入数据
filename='pima_data.csv'
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
dataset=read_csv(filename,names=names)
# 将数据分成输入数据和输出数据
array=dataset.values
X=array[:, 0:8]
Y=array[:, 8];
# 数据转换
transformer=MinMaxScaler(feature_range=(0,1))
news=transformer.fit_transform(X)
set_printoptions(precision=3)
print(news)
2.正态化数据
正态化数据是有效的处理符合高斯分布的数据的手段,输出结果以0为中位数,方差为1.
可以通过scikit-learn提供的StandardScaler类来处理
from pandas import read_csv
from numpy import set_printoptions
from sklearn.preprocessing import StandardScaler
# 导入数据
filename='pima_data.csv'
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
dataset=read_csv(filename,names=names)
# 将数据分成输入数据和输出数据
array=dataset.values
X=array[:, 0:8]
Y=array[:, 8];
# 数据转换
transformer=StandardScaler()
news=transformer.fit_transform(X)
set_printoptions(precision=3)
print(news)
3.标准化数据
标准化数据处理是将每一行的数据的距离处理成1,又叫作“归一元”处理,适合处理稀疏数据(具有很多为0的数据)
可以使用scikit-learn中的Normalizer类实现
from pandas import read_csv
from numpy import set_printoptions
from sklearn.preprocessing import Normalizer
# 导入数据
filename='pima_data.csv'
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
dataset=read_csv(filename,names=names)
# 将数据分成输入数据和输出数据
array=dataset.values
X=array[:, 0:8]
Y=array[:, 8];
# 数据转换
transformer=Normalizer()
news=transformer.fit_transform(X)
set_printoptions(precision=3)
print(news)
4.二值数据
将数据转化 为二值,大于阈值(threshold)设置为1,小于阈值设置为0。
可以使用scikit-learn中的Binarizer类实现。
from pandas import read_csv
from numpy import set_printoptions
from sklearn.preprocessing import Binarizer
# 导入数据
filename='pima_data.csv'
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
dataset=read_csv(filename,names=names)
# 将数据分成输入数据和输出数据
array=dataset.values
X=array[:, 0:8]
Y=array[:, 8];
# 数据转换
transformer=Binarizer(threshold=10.0)
news=transformer.fit_transform(X)
set_printoptions(precision=3)
print(news)