说这算法之前的话,前期的准备工作,请看我前面的博客。上一篇,我说到了K-means聚类算法,但是有很多的不足,有很多能够改进的地方,例如,怎样使得聚类效果达到全局最优(可能的最好结果)呢?

那么接下来的二分K-means算法就来解决这个问题了。

一、二分K-means算法

二分K均值算法的基本思想:首先将所有的点作为一个簇来对待,并对这个簇进行K均值聚类,然后计算划分开的两个簇的总误差平方和SSE(Sum of Squared Error),将SSE较小的那个簇经行划分,以此类推,每次repeat对每个Current簇经行SSE比较,每次都是对最小SSE的簇划分(这样好贪心啊),最后当簇的个数达到K值的时候,那么整个循环就over了,我们的聚类也是完成了,最后就是显示结果了。

算法伪代码如下:

##############################################################################

###########################################################################

将所有的点看成一个簇

当簇的数目小于K时

对于每一个簇

计算总误差

在给定的簇上面进行K均值聚类(K=2)

计算将该簇一分为二后的总误差

选择使得误差最小的那个簇进行划分操作

############################################################################################

二、python实现

数据集和需要的包和安装过程,我前面的博客中都有了详细的讲解,因为二分K-means的基础还是K聚类,所以我把他们放一起了,这样的话,统一的接口,统一的数据类型,这真是极好的,接下来,我就直接贴代码了。

k-means.py

###########################################################################

def euclDistance1(point1,point2):

b=sum(np.power(point1-point2,2))

return

np.sqrt(b[0,0]+b[0,1])

#init points with random using list

def initPoints1(tt,k):

num,dim=tt.shape

points=np.zeros((k,dim))

r_list=range(0,80)

b_list=random.sample (r_list,k)

for

i in range(k):

index1=int(random.uniform (0,num))

points[i,:]=tt[index1,:]

return

points

#kmeans cluster using list

def

kmeans1(tt,k):

clusterState=True

clusterAssment=np.zeros([len(tt),2])

points=initPoints1(tt,k)

while

clusterState:

clusterState=False

for i in range(len(tt)):

minDist=euclDistance1(points[0,:], tt[i,:])

#print(minDist)

#minDist=100000.0

minIndex=0

for j in range(k):

distance = euclDistance1(points[j,:],tt[i,:])

if distance < minDist:

minDist=distance

minIndex=j

#calculate the count of each cluster

#update cluster

if clusterAssment[i, 0] != minIndex:

clusterState = True

clusterAssment[i, :] = minIndex, minDist**2

for j in range(k):

sumX=0

python聚类分析成绩反思_机器学习python实践——二分K-means聚类相关推荐

  1. python自动化测试教学反思_学习python自动化测试月半总结

    记得上月24号来培训班上课(不推荐培训班,只讲经历),感觉回到了上学的时代,我们一班一共17个人,来这里的原因都大抵相同,所以说也是一种缘分吧,我向来是个认人很慢的人,第一天连班里的同学名字都没记全. ...

  2. python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)

    有朋友会问,刚学了一周,什么是面向对象都还不清楚就可以写程序?还有Python不是写"爬虫"吗? Python是面向对象的语言,函数.模块.数字.字符串都是对象,并且完全支持继承. ...

  3. python 比赛成绩预测_使用Python进行体育竞技分析(预测球队成绩)

    今天我们用python进行体育竞技分析,预测球队成绩 一. 体育竞技分析的IPO模式 : 输入I(input):两个球员的能力值,模拟比赛的次数(其中,运动员的能力值,可以通过发球方赢得本回合的概率来 ...

  4. python 比赛成绩预测_利用 Python 预测英雄联盟胜负,分析了 5 万多场比赛才得出的数据!值得,涨知识了!...

    Mika 来源 | 头图 |CSDN自东方IC今天教大家用Python预测英雄联盟比赛胜负. Show me data,用数据说话 今天我们聊一聊 Python预测LOL胜负 目前,英雄联盟S10全球 ...

  5. python做成绩表_自学Python笔记:用Python做成绩分析(2)

    #Grade.py import pandas as pd #打开原始表grade.xlsx df = pd.read_excel("grade.xlsx","grade ...

  6. 机器学习之无监督学习-K均值聚类算法

    机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...

  7. 机器学习算法与Python实践之(六)二分k均值聚类

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  8. 机器学习算法与Python实践之k均值聚类(k-means)

    机器学习算法与Python实践之(五)k均值聚类(k-means) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是 ...

  9. 机器学习算法与Python实践之 k均值聚类(k-means)

    文章来源:http://blog.csdn.net/zouxy09/article/details/17589329 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书 ...

最新文章

  1. Linux显示某文件中有关某字符串的信息
  2. Windows XP系统超强支持工具全面接触
  3. IOS开发基础之摇奖机案例
  4. 修改gitlab数据卷的位置
  5. java 逆矩阵,java – 如何创建逆变换矩阵
  6. directx和opengl 电子白板
  7. C#关键字=四六级核心词汇
  8. 新一代 FlinkSQL 平台,重新定义 Apache Flink 开发
  9. android软件游戏显示fps测试工具,别被跑分骗了!能看安卓游戏帧数的小工具
  10. 互联网晚报 | 8月29日 星期日 | vivo宣布9月13号起实行双休工作制;快狗打车赴港IPO;我国中老年网民规模近3亿...
  11. DWG 、DXF格式互转、CAD版本转换,记住一个就能快速提高你的工作效率!
  12. 内核 BUG_ON 以及WARN_ON 用法作用
  13. python输入两个数求和笔试题_Python练习题1.1从键盘输入两个数,求它们的和并输出...
  14. 计算机网络修复提示DNS服务器,dns被劫持或提示配置错误,该怎么解决
  15. 如何在 HTML中使用图标字体
  16. Java 学习API(一)
  17. ubuntu下屏幕闪烁
  18. 金融核心业务流程整理
  19. 落花响应html,史上最“脑残”的“抢火车票”程序(node.js版) - 落花落雨不落叶...
  20. 大众中国纯电动战略“水土不服”?理想ONE冲击月销过万目标

热门文章

  1. java常见的ide_在三个Java IDE中生成的三种常见方法
  2. glass fish_Glass Fish 4.0.1中的Jersey SSE功能
  3. 怎样编写测试类测试分支_编写干净的测试–从配置开始
  4. 从响应式Spring Data存储库流式传输实时更新
  5. perl大骆驼和小骆驼_骆驼路线的主/从故障转移
  6. java 权威指南_Java 8:CompletableFuture权威指南
  7. netbeans 定制代码_将NetBeans代码模板弯曲到我的意愿
  8. wso2 esb_通过运行示例从WSO2 ESB开始
  9. 使用“另类” Cloud Foundry Gradle插件无需停机
  10. 使用Spring boot,Thymeleaf,AngularJS从零开始构建一个新的Web应用程序-第3部分