Python每日一记19>>>无监督学习K-Means聚类

令人惊讶的是,尽管我们的世界几乎被数据所淹没,但很大一部分是未经标注未被整理过的,这意味着这些数据对于大多数目前的监督式学习来说是不可用的。
以上,反映出监督学习的局限性也突出无监督学习的重要性和发展前景,即便如此,目前而言,任何无监督学习的准确性和有效性也达不到监督学习的效果。
在介绍无监督学习之前,先介绍数据预处理。
1、数据预处理
通用代码
from sklearn.preprocessing import Minmaxscaler
k=Minmaxscaler()
k.fit(x1)
k.transform(x2)
基于上,我们可以用其他预处理函数替代Minmaxscaler,如StandarScaler,RobusrScaler,Normalizer等。更多或者函数详情情自行网上查阅资料。
2、无监督学习
实验证明,数据预处理对于无监督学习算法的有效性提高有一定作用,准确的说,数据预处理对大部分的算法均有提高得分的效用,毕竟一个好的数据集,分析起来更加容易。
2.1、主成分分析PCA
简称PCA,是一种旋转数据集的方法,旋转后的数据特征无相关性,原数数据的特征减少而已,这样有助于简单化数据集,但同时保留原数据的大部分特性。
在这里插入图片描述
在这里插入图片描述
我们发现数据集的特征数量从50变成了5,这是我们设置n_components=5,另外我们可以设置n_components=0.9,即保留原始数据的90%信息,我们发现特征数为3个则保留了原始数据的90%信息。
在这里插入图片描述
在这里插入图片描述
其次我们可以查看主成分的情况:
在这里插入图片描述
在这里插入图片描述
我们发现主成分的维度是3行50列,表示3个主成分,分别与50个特征的函数关系矩阵。具体的不需要了解,我们只需要会降维,并且利用降维后的数据进行其他算法操作即可。
另外我们可以在降维中进行白化处理:pca=PCA(n_components=0.9,whiten=True)
白化可以让样本特征之间相关性降低,且所有特征具有相同的方差。经过白化后的数据,进行其他算法的效果更好。
2.2、非负矩阵分解NMF
类似于PCA,也是用于降维,但是NMF只能适用与非负值,也不能设置n_components=0.9等浮点数。
因此PCA是更加好用的降维方式。
2.3、K-Means聚类
在这里插入图片描述
在这里插入图片描述
一共分成了四类,我们用set()得到非重复值
进行预测得到给定的值属于【0】类
值得注意的是,给定的数据一定要是二维数据[[2,6,8,9,7]],否则不能进行预测,会报错,即不能[2,6,8,9,7]。
其他的聚类算法包括,凝聚聚类和DBSCAN算法,并不常用,需要的可以自行去查找资料。

猜你喜欢

转载自blog.csdn.net/weixin_44663675/article/details/88685190