1、聚类算法介绍

关于聚类算法,可以查看:常见的六大聚类算法

2、k-means 4阶段

K-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型。算法执行的过程分为4个阶段。

  • 1.首先,随机设K个特征空间内的点作为初始的聚类中心。
  • 2.然后,对于根据每个数据的特征向量,从K个聚类中心中寻找距离最近的一个,并且把该数据标记为这个聚类中心。
  • 3.接着,在所有的数据都被标记过聚类中心之后,根据这些数据新分配的类簇,通过取分配给每个先前质心的所有样本的平均值来创建新的质心重,新对K个聚类中心做计算。
  • 4.最后,计算旧和新质心之间的差异,如果所有的数据点从属的聚类中心与上一次的分配的类簇没有变化,那么迭代就可以停止,否则回到步骤2继续循环。

K均值等于具有小的全对称协方差矩阵的期望最大化算法。

3、k-means API

sklearn.cluster.KMeans

class sklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='deprecated', verbose=0, random_state=None, copy_x=True, n_jobs='deprecated', algorithm='auto')参数:
n_clusters : int, default=8 要形成的聚类数以及生成的质心数。
init : {‘k-means++’, ‘random’, ndarray, callable}, default=’k-means++’初始化方法,默认为'k-means++',以智能方式选择k-均值聚类的初始聚类中心,以加速收敛;random,从初始质心数据中随机选择k个观察值
n_init : int,默认值:10使用不同质心种子运行k-means算法的时间。最终结果将是n_init连续运行在惯性方面的最佳输出。
n_jobs : init用于计算的作业数量。这可以通过并行计算每个运行的n_init。如果-1使用所有CPU。如果给出1,则不使用任何并行计算代码,这对调试很有用。对于-1以下的n_jobs,使用(n_cpus + 1 + n_jobs)。因此,对于n_jobs = -2,所有CPU都使用一个。
random_state : 随机数种子,默认为全局numpy随机数生成器。
labels_:默认标记的类型,可以和真实值比较(不是值比较)# 关于其它更多参数介绍访问:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#examples-using-sklearn-cluster-kmeans]使用kmeans的方式案例:
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2, random_state=0)

方法
fit(X,y=None)
使用X作为训练数据拟合模型

kmeans.fit(X)

predict(X)
预测新的数据所在的类别

kmeans.predict([[0, 0], [4, 4]])
array([0, 1], dtype=int32)

属性
cluster_centers_
集群中心的点坐标

kmeans.cluster_centers_
array([[1.,2.],[4.,2.]])

labels_
每个点的类别

kmeans.labels_

4、Kmeans性能评估指标



4.1 Kmeans性能评估指标API

sklearn.metrics.silhouette_score

sklearn.metrics.silhouette_score(X, labels)
计算所有样本的平均轮廓系数X:特征值
labels : 被聚类标记的目标值

5、k-means案例分析

手写数字数据上K-Means聚类的演示

# -*- coding: UTF-8 -*-from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeans
from sklearn.datasets import load_digitsdef kmeans():"""手写数字聚类过程:return: None"""# 加载手写数字数据集ld = load_digits()print(ld.data)print("------------------------------------------")print(ld.target)print("---------查看第一个样本数据----------------")# 查看第一个样本数据print(ld.data[0])print("------------------------------------------")# print(ld.target[:20])# 聚类km = KMeans(n_clusters=810)km.fit_transform(ld.data)print(km.labels_[:20])# (silhouette :  /ˌsɪluˈet/  n:轮廓,剪影, vt. 使…照出影子来;使…仅仅显出轮廓)print(silhouette_score(ld.data,km.labels_))if __name__=="__main__":kmeans()

输出结果:

[[ 0.  0.  5. ...  0.  0.  0.][ 0.  0.  0. ... 10.  0.  0.][ 0.  0.  0. ... 16.  9.  0.]...[ 0.  0.  1. ...  6.  0.  0.][ 0.  0.  2. ... 12.  0.  0.][ 0.  0. 10. ... 12.  1.  0.]]
------------------------------------------
[0 1 2 ... 8 9 8]
---------查看第一个样本数据----------------
[ 0.  0.  5. 13.  9.  1.  0.  0.  0.  0. 13. 15. 10. 15.  5.  0.  0.  3.15.  2.  0. 11.  8.  0.  0.  4. 12.  0.  0.  8.  8.  0.  0.  5.  8.  0.0.  9.  8.  0.  0.  4. 11.  0.  1. 12.  7.  0.  0.  2. 14.  5. 10. 12.0.  0.  0.  0.  6. 13. 10.  0.  0.  0.]
------------------------------------------
[209 579  30 233  33 646 712 369 211 784 162  81 158 735  73  46 284 564622 720]
0.09647323481043048

再如案例:https://www.cnblogs.com/moon2/p/9872706.html

6、kmeans总结

特点分析:
采用迭代式算法,直观易懂并且非常实用
缺点:
容易收敛到局部最优解(多次聚类)
需要预先设定簇的数量(k-means++解决)

打个赏呗,您的支持是我坚持写好博文的动力

16_非监督学习、k-means 4阶段、kmeans API、Kmeans性能评估指标、案例相关推荐

  1. 机器学习(17)无监督学习 -- K-means算法与性能评估

    目录 一.K-means 1.概念 2.过程 3.API(K-means) 二.K-means性能评估 1.轮廓系数 2.API(轮廓系数) 一.K-means 1.概念 无监督学习:没有目标值(没有 ...

  2. Machine Learning | (12) 非监督学习-k-means

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  3. 【机器学习】K-Means(非监督学习)学习及实例使用其将图片压缩

    非监督学习之k-means K-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型.算法执行的过程分为4个阶段. 1.从数据中选择k个对象作为初始聚类中心; 2.计算每个 ...

  4. 机器学习非监督学习—k-means及案例分析

    一.非监督学习 无监督学习,顾名思义,就是不受监督的学习,一种自由的学习方式.该学习方式不需要先验知识进行指导,而是不断地自我认知,自我巩固,最后进行自我归纳,在机器学习中,无监督学习可以被简单理解为 ...

  5. 机器学习之非监督学习(六)——聚类(K-Means)

    K-means算法 (无监督算法,聚类算法) 1-1 基本流程 一.概念: K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之 ...

  6. 非监督学习-Apriori(关联),PCA(降维), k-means(聚类)

    Apriori算法原理总结 - 刘建平Pinard - 博客园Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策.比如 ...

  7. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  8. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  9. Deep Learning论文笔记之(三)单层非监督学习网络分析

    Deep Learning论文笔记之(三)单层非监督学习网络分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

最新文章

  1. python 学习 [day8]class成员
  2. JavaScript String 对象扩展方法
  3. [开源] .NETCore websocket 即时通讯组件---ImCore
  4. 会员系统整合的想法[择]
  5. Centos netperf安装
  6. 斐波那契问题的递归和动态规划
  7. 海量存储之十八–一致性和高可用专题
  8. Memory Ordering
  9. ASP.NET登录以及注册
  10. Meanshift 均值飘移实现图像聚类 MATLAB实现(4)
  11. CSS fixed 定位元素失效的问题
  12. ES6模块的循环加载
  13. [leetcode]5169. 日期之间隔几天
  14. oracle18cscott,Oracle 18c 数据库中scott用户不存在的解决方法
  15. RAID - 提升IO性能及数据安全
  16. 人资(人事)送命连环问,51个问题。
  17. 恢复Windows10的经典照片查看器
  18. linux 程序网速监控软件,Linux实时网速监控软件ifstat简易教程
  19. 只有外包公司的offer,那没得选?
  20. 震撼【超高细节地球】GIS相关引擎,速看。。。

热门文章

  1. 《机器学习实战》总结
  2. Linux shell脚本编程(二)
  3. Web框架之Django_06 模型层了解(F查询、Q查询、事务、update和save、only和defer、choice属性、bulk_create)
  4. Uipath 学习栏目基础教学:2Uipath变量介绍
  5. opencv进阶学习笔记12:轮廓发现和对象测量
  6. opencv学习笔记18:canny算子边缘检测原理及其函数使用
  7. boost::safe_numerics模块实现混合类型产生令人惊讶的结果的测试程序
  8. boost::mpl模块实现empty相关的测试程序
  9. boost::mp11::mp_bind_q相关用法的测试程序
  10. boost::edge_coloring用法的测试程序