Kmeans

KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一组一组聚集在一起的数 据,在一个簇中的数据就认为是同一类。簇就是聚类的结果表现。 簇中所有数据的均值 通常被称为这个簇的“质心”(centroids)。在一个二维平面中,一簇数据点的质心的 横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高维空间。

Kmeans

顺序 过程
1 随机抽取K个样本作为最初的质心
2 开始循环
2.1 将每个样本点分配到离他们最近的质心,生成K个簇
2.2 对于每个簇,计算所有被分到该簇的样本点的平均值作为新的质心
3 当质心的位置不再发生变化,迭代停止,聚类完成

案例:基于轮廓系数来选择n_clusters

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouette_score
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
for n_clusters in [2,3,4,5,6,7]:n_clusters = n_clustersfig, (ax1, ax2) = plt.subplots(1, 2)fig.set_size_inches(18, 7)ax1.set_xlim([-0.1, 1])ax1.set_ylim([0, X.shape[0] + (n_clusters + 1) * 10])clusterer = KMeans(n_clusters=n_clusters, random_state=10).fit(X)cluster_labels = clusterer.labels_silhouette_avg = silhouette_score(X, cluster_labels)print("For n_clusters =", n_clusters,"The average silhouette_score is :", silhouette_avg)sample_silhouette_values = silhouette_samples(X, cluster_labels)y_lower = 10for i in range(n_clusters):ith_cluster_silhouette_values = sample_silhouette_values[cluster_labels == i]ith_cluster_silhouette_values.sort()size_cluster_i = ith_cluster_silhouette_values.shape[0]y_upper = y_lower + size_cluster_icolor = cm.nipy_spectral(float(i)/n_clusters)ax1.fill_betweenx(np.arange(y_lower, y_upper),ith_cluster_silhouette_values,facecolor=color,alpha=0.7)ax1.text(-0.05, y_lower + 0.5 * size_cluster_i, str(i))y_lower = y_upper + 10ax1.set_title("The silhouette plot for the various clusters.")ax1.set_xlabel("The silhouette coefficient values")ax1.set_ylabel("Cluster label")ax1.axvline(x=silhouette_avg, color="red", linestyle="--")ax1.set_yticks([])ax1.set_xticks([-0.1, 0, 0.2, 0.4, 0.6, 0.8, 1])colors = cm.nipy_spectral(cluster_labels.astype(float) / n_clusters)ax2.scatter(X[:, 0], X[:, 1],marker='o',s=8,c=colors)centers = clusterer.cluster_centers_# Draw white circles at cluster centersax2.scatter(centers[:, 0], centers[:, 1], marker='x',c="red", alpha=1, s=200)ax2.set_title("The visualization of the clustered data.")ax2.set_xlabel("Feature space for the 1st feature")ax2.set_ylabel("Feature space for the 2nd feature")plt.suptitle(("Silhouette analysis for KMeans clustering on sample data ""with n_clusters = %d" % n_clusters),fontsize=14, fontweight='bold')plt.show()

结果

sklearn中KMeans重要参数n_clusters相关推荐

  1. sklearn中的RandomForestClassifier参数详解

    https://blog.csdn.net/qq_16633405/article/details/58596368 相当有思考的文章 sklearn随机森林分类类RandomForestClassi ...

  2. Python中SKlearn中kmeans聚类

    1.随机生成二维聚类数据 [python]  view plain copy import numpy as np x1 = np.array([1, 2, 3, 1, 5, 6, 5, 5, 6,  ...

  3. sklearn中的聚类算法K-Means

    1 概述 1.1 无监督学习与聚类算法 决策树.随机森林.逻辑回归虽然有着不同的功能,但却都属于"有监督学习"的一部分,即是说,模型在训练的时候,既需要特征矩阵XXX,也需要真实标 ...

  4. sklearn之k-means聚类算法

    听了菜菜的sklearn算法而写的学习笔记 概述 无监督学习与有监督学习 结构化数据与非结构化数据 聚类算法与分类算法 sklearn中的聚类算法 KMeans一最简单的聚类算法 KMeans算法工作 ...

  5. sklearn中的xgboost_xgboost来了

    一.xgboost前奏 1,介绍一下啥是xgboost XGBoost全称是eXtreme Gradient Boosting,即极限梯度提升算法.它由陈天奇所设计,致力于让提升树突破自身的计算极限, ...

  6. sklearn中SVM的可视化

    文章目录 第一部分:如何绘制三维散点图和分类平面 第二部分:sklearn中的SVM参数介绍 第三部分:源代码and数据 最近遇到一个简单的二分类任务,本来可用一维的线性分类器来解决,但是为了获得更好 ...

  7. 【Python机器学习】Sklearn库中Kmeans类、超参数K值确定、特征归一化的讲解(图文解释)

    一.局部最优解 采用随机产生初始簇中心 的方法,可能会出现运行 结果不一致的情况.这是 因为不同的初始簇中心使 得算法可能收敛到不同的 局部极小值. 不能收敛到全局最小值,是最优化计算中常常遇到的问题 ...

  8. sklearn.cluster.KMeans 参数介绍

    sklearn.cluster.KMeans 参数介绍 为什么要介绍sklearn这个库里的kmeans? 这个是现在python机器学习最流行的集成库,同时由于要用这个方法,直接去看英文文档既累又浪 ...

  9. sklearn中的KMeans算法

    1.聚类算法又叫做**"无监督分类"**,其目的是将数据划分成有意义或有用的组(或簇).这种划分可以基于我们的业务需求或建模需求来完成,也可以单纯地帮助我们探索数据的自然结构和分布 ...

  10. sklearn.cluster.KMeans参数介绍

    转载自:https://blog.csdn.net/weixin_41724761/article/details/89786414,本文只做个人记录学习使用,版权归原作者所有. sklearn.cl ...

最新文章

  1. 跨平台的 .NET 运行环境 Mono 3.2 新特性
  2. 邮件服务器一些A和MX类型恶意域名请求的解释
  3. 小型邮件服务器,windows 2003 server小型邮件服务器架设
  4. 在服务器上打包部署springboot+vue的项目(一)启动tomcat后打开浏览器点击登录无反应 页面空白问题
  5. Underlying cause: com.mysql.cj.jdbc.exceptions.CommunicationsException : Communications link failure
  6. python饼状图教程_Python数据可视化:饼状图的实例讲解
  7. 一个可以支持多版本的MediaPlayer的控件做法(支持MediaPlayer6,7,8,9,10的播放)
  8. 儿童卫士360智能手表,给孩子更多保护
  9. ABAQUS单位统一
  10. 今日金融词汇---前复权,是什么?
  11. Linux 自动挂载U盘 实现热插拔
  12. 单片机中的数据存储器ram
  13. 一些面经(1)---计算机网络、操作系统、测试
  14. 我,30岁,转行了!关于转行的13个真实困惑
  15. 学习python的微信公众号_python学习—实现微信公众号聊天机器人
  16. android 相机闪光灯和手电筒的使用
  17. SDUT 4123 喵帕斯之天才算数少女
  18. 尚学堂 JAVA第二章作业
  19. Java学习记录 根据路程计算费用。
  20. 亚马逊云科技赋能合作伙伴 云销售逆流上行

热门文章

  1. 谈谈你对JMM的理解
  2. 华东师范大学2019计算机与软件工程学院 “高可信”夏令营总结
  3. LOJ 6131 Fiend - 行列式 - 可并堆 - 贪心
  4. .NET Reflector Visual Studio Extension
  5. response.sendRedirect 加域名或者不加域名的重定向加locahost或者不加localhost
  6. WORD2003无法打开WORD2000文档解决方法
  7. 基于51单片机的简易计算器proteus仿真 数码管显示
  8. 麒麟子Javascript游戏编程零基础教程六:Javascript中的实数类型number
  9. 记下js dom动态添加事件的解决方法
  10. Python之天天向上的力量