从负无穷学习机器学习(七)数据预处理

一、数据预处理

通常数据集的样本特征值表示范围不一,而在训练模型中,数据集的样本特征范围值如果限定在0~1之间的话有助于提高模型的准确率,所以数据的预处理很有必要。

(一)、使用StandardScaler进行数据的预处理

# 导入科学计算库
import numpy as np
# 导入画图工具
import matplotlib.pyplot as plt
# 导入数据集生成工具
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=40, centers=2, random_state=50, cluster_std=2)
# 用散点图绘制图像
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.cool)
plt.title('Preprocessor:None')
plt.show()
# 可以看到特征1的数据值范围在-8~7之间,特征2的特征值在-10~0之间。

# 导入StandardScaler
from sklearn.preprocessing import StandardScaler
# 使用StandardScaler进行数据的预处理
X_1 = StandardScaler().fit_transform(X)
# 用散点图绘制预处理过的数据点
plt.scatter(X_1[:, 0], X_1[:, 1], c=y, cmap=plt.cm.cool)
plt.title('Preprocessor:StandardScaler')
plt.show()
# 可以看到数据经过预处理后,特征1的数值在-2~3之间,特征2的值在-3~2之间。

经过对比两张图发现数据点的位置并没有发生变化,而仅仅是坐标轴发生了变化。StandardScaler的原理是将数据的特征值转化为均值为0,方差为1的状态。

在这里插入图片描述

(二)、使用MinMaxScaler进行数据预处理

# 导入MinMaxScaler
from sklearn.preprocessing import MinMaxScaler
X_2 = MinMaxScaler().fit_transform(X)
plt.scatter(X_2[:, 0], X_2[:, 1], c=y, cmap=plt.cm.cool)
plt.title('Preprocessor:MinMaxScaler')
plt.show()

可以看到数据的特征值都被转换为0~1之间,可以想象成将数据都压缩在1x1的方格里,这样可以使模型训练的速度更快且准确率也会提高。

在这里插入图片描述

(三)、使用RobustScaler进行数据预处理

# 导入RobustScaler
from sklearn.preprocessing import RobustScaler
X_3 = RobustScaler().fit_transform(X)
plt.scatter(X_3[:, 0], X_3[:, 1], c=y, cmap=plt.cm.cool)
plt.title('Preprocessor:RobustScaler')
plt.show()

# 可以看到数据的特征1范围在-1.5~2.0之间,而特征2的范围在-2~1.5之间。

RobustScaler和StandardScaler的图像比较类似。但是实现的方法不同,它使用中位数和四分位数,使用暴力的方式进行缩放,把一些异常值剔除

在这里插入图片描述

(四)、使用Normalizer进行数据预处理

# 它的原理是将所有样本的特征向量转换成欧几里德距离为1,也就是说它将数据的分布变成一个半径为1的圆或者球。
# 它通常出现在只需要保留特征向量的方向而忽略其值的场合。
# 导入Normalizer
from sklearn.preprocessing import Normalizer
X_4 = Normalizer().fit_transform(X)
plt.scatter(X_4[:, 0], X_4[:, 1], c=y, cmap=plt.cm.cool)
plt.title('Preprocessor:Normalizer')
plt.show()

在这里插入图片描述

(五)、使用MaxAbsScaler进行数据预处理

from sklearn.preprocessing import MaxAbsScaler
X_5 = MaxAbsScaler().fit_transform(X)
plt.scatter(X_5[:, 0], X_5[:, 1], c=y, cmap=plt.cm.cool)
plt.title('Preprocessor:')
plt.show()

# 该方法通过每个特征绝对值的最大值来缩放。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c6p3CXHO-1580974726846)(en-resource://database/3583:1)]

(六)、使用QuantileTransformer进行数据预处理

from sklearn.preprocessing import QuantileTransformer
X_6 = QuantileTransformer(n_quantiles=2).fit_transform(X)
plt.scatter(X_6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值