理论

无监督学习

无监督学习是相对于有监督学习的概念,无监督学习的样本只有数据没有标签(label),由模型自主发现样本之间的关系。可用于数据的类聚(类聚算法)和降维(主成分分析)等。

无监督学习的结果评估

ARI指标

当样本有真实指标(带label)时,可以使用ARI(调整兰德指数),公式为$$RI = \cfrac{a + b}{C_{2}^{n_{sample}}}$$ $$ARI = \cfrac{RI - E(RI)}{max(RI) - E(RI)}$$
其中:

  • a:在预测结果和测试结果中同属于一类的样本对数
  • b:在预测结果和测试结果中均不属于一类的样本对数

该值越大,说明结果越好

轮廓系数

轮廓系数不需要先验知识,计算过程如下:

  1. 对于每一个样本,计算同类样本中其他样本到该样本的评价距离a
  2. 分别计算其他类样本中各类样本到这个样本的平均距离,找到平均距离最近的一个类到该样本的平均距离
  3. 计算轮廓系数$sc=\cfrac{b - a}{max(a,b)}$

对所有样本重复该过程,取平均值为轮廓系数

k 均值类聚(k-mean)

k均值类聚是一种简单的无监督学习模型,该模型是基于距离的类聚模型,将把特征空间中距离相近的点进行类聚。
在训练k均值类聚模型中,有以下步骤:

  1. 随机在特征空间中指定k个质心
  2. 计算每个样本到质心的距离,归入最近的质心一类
  3. 对每个质心的样本分别求平均,得到新的k个质心
  4. 第二步与第三步不断迭代,直到某次类聚结果不变(或改变归属的样本少于某个值),迭代结束

代码实现——手写数字识别

读取数据

import numpy as np
import pandas as pd
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)

数据预处理——分离数据与label

print(digits_test[:2])
   0   1   2   3   4   5   6   7   8   9  ...  55  56  57  58  59  60  61  62  \
0   0   0   5  13   9   1   0   0   0   0 ...   0   0   0   6  13  10   0   0
1   0   0   0  12  13   5   0   0   0   0 ...   0   0   0   0  11  16  10   0   63  64
0   0   0
1   0   1  [2 rows x 65 columns]
x_train = digits_train[np.arange(64)]
x_test = digits_test[np.arange(64)]
y_train = digits_train[64]
y_test = digits_test[64]

模型训练

from sklearn.cluster import KMeans
kme = KMeans(n_clusters=10)
model = kme.fit(x_train,y_train)
y_pre = kme.predict(x_test)

模型评估

ARI指标

from sklearn.metrics import adjusted_rand_score
adjusted_rand_score(y_test,y_pre)
0.66305779493265249

轮廓系数

from sklearn.metrics import silhouette_score
silhouette_score(y_test.values.reshape(-1,1),y_pre.reshape(-1,1),metric="euclidean")
c:\users\qiank\appdata\local\programs\python\python35\lib\site-packages\sklearn\utils\validation.py:547: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().y = column_or_1d(y, warn=True)0.27296875226980805

基于sklearn的k均值类聚模型相关推荐

  1. 基于Python的k均值聚类不同规格的商品名

    基于Python的k均值聚类不同规格的商品名 前言 聚类的目标是使得同一簇内的点之间的距离较短,而不同簇中点之间的距离较大.以此来区分不同的群体. 本篇讲述使用k均值算法对超市购物记录集中的商品名称进 ...

  2. [机器学习-Sklearn]K-means(K均值)学习与总结

    K-means总结 前言 一,k-means算法 二,k的选择(仅供参考) 1.肘部法则 2. 根据实际应用的目的选择K 三,代码讲解 四, K值的确定的代码 五, 相同数据下用K-means分成3个 ...

  3. 基于SPSS的K均值算法

    文章目录 前言 一.K均值算法是什么? 二.动画演示 1.网站 2.示例 三.缺点解决(K-means++算法) 四.SPSS实现 总结 前言 菜鸡学习数学建模 一.K均值算法是什么? K-means ...

  4. Kmeans 均值类聚算法 (无numpy版)

    Kmeans: 指 在平面坐标系中随机生成M个点 然后随机N个类然后在这M个点中随机出N个点作为分类的中心点然后计算其他点和这N个点之间的距离,将每个点分给距离最近的中心点,最后在这N个点确定的N类中 ...

  5. Kmeans 均值类聚算法 (numpy库版)

    对上篇Kmeans算法改写并没有重写稍显繁琐.. import random import matplotlib.pyplot as plt import numpy as np import tim ...

  6. 基于K均值聚类的葡萄酒品种判别

    特别注意:主要思路.程序和分析过程来源于:https://www.kaggle.com/xvivancos/tutorial-clustering-wines-with-k-means.本文在此基础上 ...

  7. 机器学习--K均值聚类

    机器学习--聚类 一.无监督学习 二.KMeans聚类 2.1 概览 2.2 理论介绍 2.2.1 模型 2.2.2 策略 2.2.3 算法 2.3 案例讲解 2.4 Python实现 2.4.1 导 ...

  8. Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索、模型初探

    Spark数据挖掘-基于 K 均值聚类的网络流量异常检测(1): 数据探索.模型初探 1 前言 分类和回归是强大易学的机器学习技术.需要注意的是:为了对新的样本预测未知的值, 必须从大量已知目标值的样 ...

  9. 基于K均值算法的鸢尾花聚类实验(Sklearn实现)

    实验代码 ##### 相关库导入部分 ##### from sklearn.datasets import load_iris import pandas as pd from sklearn.pre ...

最新文章

  1. 关于iOS 架构的文章
  2. SpringSecurity-eclipse
  3. MySQL优化之推荐使用规范
  4. Qt Creator 创建优化的3D场景
  5. [leetcode] 72.编辑距离
  6. https抓包_从Wireshark抓包看HTTPS的加密功能
  7. Android 手机发送短信
  8. 犀牛Rhinoceros 7 for Mac(三维建模软件)
  9. 42所双一流大学图书馆公众号
  10. excel能改编码_如何修改Excel的编码-excel编码设置,查看excel编码格式
  11. python可视化图表和excel的区别_Excel的数据可视化和Python的有什么不同?
  12. 学生成绩管理系统 002
  13. 华为matebook笔记本鸿蒙,聊聊鸿蒙对笔记本电脑行业的影响
  14. 漫谈斐波那契数列与黄金分割比
  15. English_words
  16. 计算机仿真技术-基于matlab的电子信息类课程课后答案,计算机仿真技术——基于MATLAB的电子信息类课程(第3版)...
  17. java照片切换播放音乐_怎么将照片制作成视频并添加音乐呢
  18. ios html数组,[转载]IOS中字符串与数组的处理
  19. 基于深度强化学习的长期推荐系统
  20. UML 活动图 ---- 建模业务过程

热门文章

  1. 小技巧之-Zombie Enable(僵尸断点)
  2. 不装了,摊牌了、我们要搞事情
  3. 基于Android的送药上门系统
  4. 老鱼Python数据分析——篇十八:消息推送(一)
  5. pandas 文档自用3
  6. AIGC学习,AI绘画、AI写作、国内外研究现状等
  7. 【ACWing】1052. 设计密码
  8. 设计模式之UML类图初步
  9. php5.6之php-fpm优化
  10. 读《Spring Boot 3核心技术与最佳实践》有感