监督学习算法已经告一段落了,今天开始我们将介绍无监督学习的相关算法。
无监督学习,就是给你一堆数据,没有标签,没有人来“指导”你,需要自己从中发现知识。
而在无监督学习中,对数据的预处理就显得特别重要。我们需要把数据的格式、范围都调整到统一的维度,这样才能学习出有用的知识。
在scikit-learn中,主要有3种不同的数据预处理的方法,分别是MinMaxScaler、StandardScaler和Normalizer。
MinMaxScaler
先来看第一种缩放方式——MinMaxScaler,这种方式又叫做0-1缩放。它通过数学方式,将数据都缩放到0和1之间。
我们通过之前的癌症数据集来说明这一缩放方式。
首先,加载我们的数据集,并将其分成训练集和测试集
然后,加载我们的处理工具并将其实例化
接着,计算数据集中每个特征的最大值和最小值
对数据进行实际缩放
别忘了,我们还需要对测试集中的数据进行同样的变换
之后,我们就可以用处理过的数据去建模了。
StandardScaler
StandardScaler缩放又叫做标准化缩放,它的效果是将数据的各个特征都变成均值为0,方差为1。
代码的实现与上面的相同,不过这里我们要介绍一种更快捷的方法。
我们还是先加载StandardScaler类,并将其实例化
在对数据转换时,我们可以一步到位:
也就是说,我们使用fit_transform方法,可以一次性计算并完成对数据的转换,而无需分两步进行。
Normalizer
我们来看最后一种数据预处理的方法——Normalizer。
这种缩放方式,使得最后的特征向量的欧式距离为1。也就是说,把数据都投影到了一个圆上。
这种方式意味着每个特征点的缩放比例都不同,当我们对特征的长度不关心时,可以使用这种数据缩放的方式。
当然了,代码的实现方式与上面一致,这里就不赘述了。
领取专属 10元无门槛券
私享最新 技术干货