Python 机器学习及实践 Coding 无监督学习经典模型 数据聚类 and 特征降维
Posted 朱小丰的丰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 机器学习及实践 Coding 无监督学习经典模型 数据聚类 and 特征降维相关的知识,希望对你有一定的参考价值。
无监督学习:着重于发现数据本身的分布特点 (不需要对数据进行标记)节省大量人力 数据规模不可限量
1 发现数据群落 数据聚类 也可以寻找 离群样本
2 特征降维 保留数据具有区分性的低维特征
这些都是在海量数据处理中非常实用的技术
数据聚类
K均值算法(预设聚类的个数 不断更新聚类中心 迭代 ,是所有数据点到其所属聚类中心距离平方和趋于稳定)
过程
①首先 随机布设K个特证空间内的点作为初始的聚类中心
②然后 对于根据每个数据的特长向量 从K个聚类中心中 寻找距离最近的一个 并且把该数据标记为从属与这个聚类中心
③接着 在所有数据都被标记了聚类中心之后 根据这些数据新分配的类簇 重新对K个聚类中心做计算
④如果一轮下来 所有数据从属的聚类中心与上一次的分配的类簇没有变化 那么迭代可以 停止 否则回到②继续循环
K-mans算法在手写体数字图像数据上的使用示例
import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.cluster import KMeans #使用panda 读取训练数据集 和 测试数据集 digits_train = pd.read_csv(‘https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tra‘,header=None) digits_test=pd.read_csv(‘https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tes‘,header=None) #从训练数据集与测试数据集上都分离出64维度的像素特征与1维度的数字目标 x_train=digits_train[np.arange(64)]#np.arange y_train=digits_train[64] x_test=digits_test[np.arange(64)] y_test=digits_test[64] #初始化Kmeans 模型 并设置聚类中心数量为10 kmeans=KMeans(n_clusters=10) kmeans.fit(x_train,y_train) y_predict=kmeans.predict(x_test) #使用ARI 进行K-means 聚类性能评估 from sklearn import metrics print(metrics.adjusted_rand_score(y_test,y_predict))
性能测评:
①被用来评估的数据本身带有正确的类别信息 使用ARI ARI指标与分类问题中计算准确性的方法类似,同时也兼顾到了类簇无法和分类标记一一对应的问题
②如果被用于评估的数据没有所属类别,那么我们习惯使用轮廓系数来度量聚类结果的质量。轮廓系数同时兼顾了聚类的凝聚度和分离度
用于评估聚类的效果并取值范围为[-1,1]。轮廓系数值越大,表示聚类效果越好。
以上是关于Python 机器学习及实践 Coding 无监督学习经典模型 数据聚类 and 特征降维的主要内容,如果未能解决你的问题,请参考以下文章
Python 机器学习及实践 Coding 无监督学习经典模型 数据聚类 and 特征降维