第十篇:K均值聚类(KMeans)
前言
本文讲解如何使用R语言进行 KMeans 均值聚类分析,并以一个关于人口出生率死亡率的实例演示具体分析步骤。
聚类分析总体流程
1. 载入并了解数据集;
2. 调用聚类函数进行聚类;
3. 查看聚类结果描述;
4. 将聚类结果图形化展示;
5. 选择最优center并最终确定聚类方案;
6. 图形化展示不同方案效果并提交分析报表。
人口出生/死亡率聚类分析 - K均值聚类
1. 载入并了解数据集
1.1 从网上下载一份txt格式的关于人口出生率统计的数据(countries.txt)。其内容大致如下:

1.2 载入数据集countries.txt:

1.3 查看相关文件信息,如维度,文件具体内容:

1.4 给数据集行列改名,并查看改名后的结果:

1.5 画出所有样本点:

2. 调用聚类函数进行聚类

kmeans 函数的原型为:kmeans (x, centers, iter.max=10, nstart=1, alogorithm=c("Hartigan-Wong", "Lloyd", "For-gy", "MacQueen"))。
这里解释下函数 kmeans 中的几个形参:
- x:进行聚类分析的数据集;
- centers:簇个数;
- iter.max:最大迭代次数;
- nstart:选择随机中心点的次数 (选择结果最优的那次随机质心);
- alogorithm:具体实现算法。默认为Hartigan-Wong。
3. 查看聚类结果

结果内容从上至下分别为:
- 每个簇的样本数;
- 每个簇的质心;
- 每个样本的聚类结果;
- 本次聚类的相关统计信息:包含组内平方和,总平方和,组间平方和,以及组间平方和/总平方和。显然它越大越好;
- 最下面的那部分是指聚类结果数据集fit_km1中的各个变量(也即上面的那些信息,如fit_km1$size就等于3)。
4. 将聚类结果图形化展示


5. 选择最优center并最终确定聚类方案

很显然,当k超过了8之后,聚类的结果波动就不大了。
可做图形象化的展示此现象:


6. 用 k=8 进行聚类,然后看看和中国属于一类的国家有哪些。

小结
除了 k 的大小,还可以通过调整迭代次数、选择中心点次数、重新实现算法等方式实现最优聚类。
另外,本文所讲的只是最为经典的KMeans聚类,更多更好玩的聚类算法,请查阅相关论文或相关R语言包的说明文档。
第十篇:K均值聚类(KMeans)的更多相关文章
- 【转】算法杂货铺——k均值聚类(K-means)
k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...
- (ZT)算法杂货铺——k均值聚类(K-means)
https://www.cnblogs.com/leoo2sk/category/273456.html 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先 ...
- 机器学习理论与实战(十)K均值聚类和二分K均值聚类
接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...
- 机器学习之路:python k均值聚类 KMeans 手写数字
python3 学习使用api 使用了网上的数据集,我把他下载到了本地 可以到我的git中下载数据集: https://github.com/linyi0604/MachineLearning 代码: ...
- 吴裕雄 python 机器学习——K均值聚类KMeans模型
import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...
- K均值聚类
聚类(cluster)与分类的不同之处在于, 分类算法训练过程中样本所属的分类是已知的属监督学习. 而聚类算法不需要带有分类的训练数据,而是根据样本特征的相似性将其分为几类,又称为无监督分类. K均值 ...
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...
- Python实现kMeans(k均值聚类)
Python实现kMeans(k均值聚类) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=> ...
- 聚类之K均值聚类和EM算法
这篇博客整理K均值聚类的内容,包括: 1.K均值聚类的原理: 2.初始类中心的选择和类别数K的确定: 3.K均值聚类和EM算法.高斯混合模型的关系. 一.K均值聚类的原理 K均值聚类(K-means) ...
随机推荐
- AI 学习新的开始
推荐入门学习 http://www.cnblogs.com/subconscious/p/6240151.html
- 读书共享 Primer Plus C-part 5
第五章 运算符.表达式和语句 关于+- 的一元运算符和二元运算符的区别 a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值 a+=1: 事实上相当于++a a=a+1: 虽然有点雷同于a+ ...
- markdown的流程图、时序图、甘特图画法
https://www.jianshu.com/p/a9ff5a9cdb25 Markdown里面的序列图 https://shd101wyy.github.io/markdown-preview-e ...
- python学习:收集ip信息
#!/usr/bin/env python from subprocess import Popen, PIPE def getIfconfig(): p = Popen(['ifco ...
- python学习:匿名函数
Python 函数 lambda 匿名函数 -lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方. def fun(x,y): return x*y fu ...
- 论 Java 中的内存分配
Java内存分配主要包括以下几个区域: 1. 寄存器:我们在程序中无法控制 2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 3. 堆:存放用new产生的数据 4. 静 ...
- [原创]ubuntu14.04部署ELK+redis日志分析系统
ubuntu14.04部署ELK+redis日志分析系统 [环境] host1:172.17.0.4 搭建ELK+redis服务 host2:172.17.0.3 搭建logstash+nginx服务 ...
- 接口-以PHP为例
<?php //使用程序模拟现实情况 //使用规范(方法/属性) interface iUSB { public function start(); public function stop() ...
- Office 365 共享链接直接进入编辑
首先在Word online共享文档(不多赘述) 但这个链接打开的是预览视图,要点击右上角的"在浏览器中编辑"才能真正编辑. 但是很多情况都是没必要进入这个预览界面再编辑的.这多点 ...
- length()方法,length属性和size()的方法的区别
length()方法,length属性和size()的方法的区别: length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法: length属性是针对Java中的数 ...