码迷,mamicode.com
首页 > 编程语言 > 详细

Python 机器学习及实践 Coding 无监督学习经典模型 数据聚类 and 特征降维

时间:2018-04-20 13:29:41      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:sklearn   class   k-means   plt   span   大量   范围   性能评估   git   

无监督学习:着重于发现数据本身的分布特点 (不需要对数据进行标记)节省大量人力 数据规模不可限量

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 特征降维

标签:sklearn   class   k-means   plt   span   大量   范围   性能评估   git   

原文地址:https://www.cnblogs.com/IAMzhuxiaofeng/p/8889774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!