K-means算法流程:

  1. 随机选k个样本作为初始聚类中心
  2. 计算数据集中每个样本到k个聚类中心距离,并将其分配到距离最小的聚类中心
  3. 对于每个聚类,重新计算中心
  4. 回到2,至得到局部最优解

python代码:

import random
import numpy as np
import matplotlib.pyplot as pltplt.ion()#开启交互,matplotlib默认阻塞模式,直到调用plt.show()才会显示def getDistance(point1,point2): #求距离return ((point1[0]-point2[0])**2+(point1[1]-point2[1])**2)**0.5def cluster(): #根据中心聚类distance=np.zeros((N,k))for i in range(N):minimum=9999for j in range(k):distance[i,j]=getDistance(point[i],centers[j])for j in range(k):if distance[i,j]<minimum:minimum=distance[i,j]center[i]=centers[j]def getE():  #求误差平方和sum_=0for i in range(k):for j in range(N):if np.all(center[j]==centers[i]):sum_+=getDistance(point[j],centers[i])**2return sum_def getNewCenters():#获得新的中心点for i in range(k):count=0temp_x=0temp_y=0for j in range(N):if np.all(center[j]==centers[i]):count+=1temp_x+=point[j,0]temp_y+=point[j,1]temp_x/=count;temp_y/=count;centers[i]=np.array([temp_x,temp_y])def show(): #展示for i in range(k):for j in range(N):if np.all(center[j]==centers[i]):plt.scatter(point[j,0],point[j,1],c=cnames[i],s=10)plt.scatter(centers[:,0],centers[:,1],c='black',s=50)k=3  #聚类中心个数
N=100 #数据集个数
cnames=['red','yellow','blue','chocolate','darkcyan','darksalmon','red','pink','yellow']center=np.zeros((N,2)) #各数据分配的中心
point=np.random.rand(N,2) #数据集中的样本
index=np.random.choice(N,k,replace=False)
centers=point[index[:]]     #随机抽取K个作为聚类中心cluster()
show()t1=0
t=getE()
while t-t1:t1=tgetNewCenters()cluster()t=getE()plt.pause(0.2)plt.clf()show()plt.ioff()

代码效果:

python实现K-means算法相关推荐

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

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

  2. 从零开始用Python实现k近邻算法(附代码、数据集)

    作者:Tavish Srivastava 翻译:王雨桐 校对:丁楠雅 本文约2000字,建议阅读8分钟. 本文将带领读者理解KNN算法在分类问题中的使用,并结合案例运用Python进行实战操作. 注意 ...

  3. python实现k均值算法_python实现kMeans算法

    聚类是一种无监督的学习,将相似的对象放到同一簇中,有点像是全自动分类,簇内的对象越相似,簇间的对象差别越大,则聚类效果越好. 1.k均值聚类算法 k均值聚类将数据分为k个簇,每个簇通过其质心,即簇中所 ...

  4. 基于Python的K近邻算法实现

    模式识别 K近邻法 目录 模式识别 K近邻法 1 一.最近邻.k近邻算法介绍 2 1.1 介绍 2 1.2 近邻法的形式化表示 2 (1)最近邻 2 (2)k近邻 3 二.实验数据集介绍 3 2.1 ...

  5. python机器学习 | K近邻算法学习(1)

    K近邻算法学习 1 K近邻算法介绍 1.1算法定义 1.2算法原理 1.3算法讨论 1.3.1 K值选择 1.3.2距离计算 1.3.3 KD树 2 K近邻算法实现 2.1scikit-learn工具 ...

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

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

  7. python实现k core算法_python实现密度聚类(模板代码+sklearn代码)

    本人在此就不搬运书上关于密度聚类的理论知识了,仅仅实现密度聚类的模板代码和调用skelarn的密度聚类算法. 有人好奇,为什么有sklearn库了还要自己去实现呢?其实,库的代码是比自己写的高效且容易 ...

  8. Python学习——K近邻算法

    K-近邻算法介绍 K-近邻算法步骤 为了说明算法步骤,这儿引用一个实例 电影名称 打斗镜头 暧昧镜头 电影类型 泰坦尼克号 3 104 爱情片 那些年 2 100 爱情片 七月与安生 1 81 爱情片 ...

  9. python实现k core算法_python实现k-近邻算法

    参考:<机器学习实战>- Machine Learning in Action 一. 必备的包 实现此算法需要准备以下的包: • matplotlib,用于绘图 • numpy,数组处理库 ...

  10. python 聚类分析 k means

    Kmeans 是一种动态聚类方法,其基本思想是:首先随机选取 K 个点作为初始凝聚点,按照距离最近原则划分为 K 类:然后重新计算 K 个类的重心作为新的凝聚点,再按照距离最近原则重新分类:重复这一过 ...

最新文章

  1. Springcloud Feign原理
  2. 《Ajax实战》三部曲之“王者归来”
  3. Oracle取最大值问题
  4. python的inspect模块
  5. mysql 开发进阶篇系列 41 mysql日志之慢查询日志
  6. (一)使用appium之前为什么要安装nodejs???
  7. Acwing 276. I-区域
  8. Nodejs创建简单的Bot
  9. Java Math Expression Engine
  10. Linux工作笔记022---查看Centos 内核版本号
  11. JS中style属性
  12. 爬虫基础练习—python爬虫下载豆瓣妹子图片
  13. Flutter开发:使用SafeArea(安全区域)
  14. 接入翼支付的php,翼支付-天翼账号开放平台
  15. Apollo搭建使用
  16. JAVA网络爬虫(无头浏览器ChromeDriver)
  17. 计算机博士英文复试自我介绍,博士生复试英文自我介绍
  18. Three.js 地理坐标和三维空间坐标的转换
  19. Yolact训练自己的数据集
  20. MaixPy K210 目标分类模型在线训练及使用教程

热门文章

  1. Java this 关键字使用
  2. android 适配
  3. linux挂在win共享文件
  4. pfSense 2.4.3 发布,包含重要的安全修复补丁
  5. 鸿蒙生死印里的声音是谁,逆天邪神:喊逆玄的确实是黎娑,鸿蒙生死印应该也是活物...
  6. Servlet运行原理以及生命周期
  7. TCP/IP协议三次握手与四次握手流程解析
  8. 创建 Pool VIP - 每天5分钟玩转 OpenStack(122)
  9. 2014 Super Training #8 C An Easy Game --DP
  10. Android——学习:线性布局权重分配