python实现K-means算法
K-means算法流程:
- 随机选k个样本作为初始聚类中心
- 计算数据集中每个样本到k个聚类中心距离,并将其分配到距离最小的聚类中心
- 对于每个聚类,重新计算中心
- 回到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算法相关推荐
- kmeans改进 matlab,基于距离函数的改进k―means 算法
摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...
- 从零开始用Python实现k近邻算法(附代码、数据集)
作者:Tavish Srivastava 翻译:王雨桐 校对:丁楠雅 本文约2000字,建议阅读8分钟. 本文将带领读者理解KNN算法在分类问题中的使用,并结合案例运用Python进行实战操作. 注意 ...
- python实现k均值算法_python实现kMeans算法
聚类是一种无监督的学习,将相似的对象放到同一簇中,有点像是全自动分类,簇内的对象越相似,簇间的对象差别越大,则聚类效果越好. 1.k均值聚类算法 k均值聚类将数据分为k个簇,每个簇通过其质心,即簇中所 ...
- 基于Python的K近邻算法实现
模式识别 K近邻法 目录 模式识别 K近邻法 1 一.最近邻.k近邻算法介绍 2 1.1 介绍 2 1.2 近邻法的形式化表示 2 (1)最近邻 2 (2)k近邻 3 二.实验数据集介绍 3 2.1 ...
- 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工具 ...
- k means算法C语言伪代码,K均值算法(K-Means)
1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...
- python实现k core算法_python实现密度聚类(模板代码+sklearn代码)
本人在此就不搬运书上关于密度聚类的理论知识了,仅仅实现密度聚类的模板代码和调用skelarn的密度聚类算法. 有人好奇,为什么有sklearn库了还要自己去实现呢?其实,库的代码是比自己写的高效且容易 ...
- Python学习——K近邻算法
K-近邻算法介绍 K-近邻算法步骤 为了说明算法步骤,这儿引用一个实例 电影名称 打斗镜头 暧昧镜头 电影类型 泰坦尼克号 3 104 爱情片 那些年 2 100 爱情片 七月与安生 1 81 爱情片 ...
- python实现k core算法_python实现k-近邻算法
参考:<机器学习实战>- Machine Learning in Action 一. 必备的包 实现此算法需要准备以下的包: • matplotlib,用于绘图 • numpy,数组处理库 ...
- python 聚类分析 k means
Kmeans 是一种动态聚类方法,其基本思想是:首先随机选取 K 个点作为初始凝聚点,按照距离最近原则划分为 K 类:然后重新计算 K 个类的重心作为新的凝聚点,再按照距离最近原则重新分类:重复这一过 ...
最新文章
- Springcloud Feign原理
- 《Ajax实战》三部曲之“王者归来”
- Oracle取最大值问题
- python的inspect模块
- mysql 开发进阶篇系列 41 mysql日志之慢查询日志
- (一)使用appium之前为什么要安装nodejs???
- Acwing 276. I-区域
- Nodejs创建简单的Bot
- Java Math Expression Engine
- Linux工作笔记022---查看Centos 内核版本号
- JS中style属性
- 爬虫基础练习—python爬虫下载豆瓣妹子图片
- Flutter开发:使用SafeArea(安全区域)
- 接入翼支付的php,翼支付-天翼账号开放平台
- Apollo搭建使用
- JAVA网络爬虫(无头浏览器ChromeDriver)
- 计算机博士英文复试自我介绍,博士生复试英文自我介绍
- Three.js 地理坐标和三维空间坐标的转换
- Yolact训练自己的数据集
- MaixPy K210 目标分类模型在线训练及使用教程
热门文章
- Java this 关键字使用
- android 适配
- linux挂在win共享文件
- pfSense 2.4.3 发布,包含重要的安全修复补丁
- 鸿蒙生死印里的声音是谁,逆天邪神:喊逆玄的确实是黎娑,鸿蒙生死印应该也是活物...
- Servlet运行原理以及生命周期
- TCP/IP协议三次握手与四次握手流程解析
- 创建 Pool VIP - 每天5分钟玩转 OpenStack(122)
- 2014 Super Training #8 C An Easy Game --DP
- Android——学习:线性布局权重分配