k均值聚类算法

简介: 【6月更文挑战第6天】k均值聚类算法。

k均值聚类算法的基本原理是根据数据的密集程度寻找相对密集数据的质心,再根据质心完成数据分类。
1.图解k均值聚类算法
下面的代码在大小为240×320的图像中选择3组数据点,为了便于说明k均值聚类算法,在选择数据点时设置了坐标的随机取值范围。将所有点作为分类数据,调用cv2.kmeans()函数并应用k均值聚类算法进行分类;在图像中用不同颜色显示分类数据和质心。
import cv2
import numpy as np
from matplotlib import pyplot as plt

创建聚类数据,3种类别,每种类别20个点

data = np.vstack((np.random.randint(10,90,(20,2)),
np.random.randint(80,170, (20, 2)),
np.random.randint(160,250, (20, 2))))
data=data.astype(np.float32)

定义算法终止条件

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 20, 1.0)

使用K均值聚类算法执行分类操作,K=3,返回结果中label保存标志,center保存质心

ret,label,center=cv2.kmeans(data,3,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)

根据运算结果返回的标志,将数据分为3组,便于绘制图像

data1 = data[label.ravel() == 0]
data2 = data[label.ravel() == 1]
data3 = data[label.ravel() == 2]
plt.scatter(data1[:,0], data1[:,1], c='r')#绘制第1类数据点,红色
plt.scatter(data2[:,0], data2[:,1], c='g')#绘制第2类数据点,绿色
plt.scatter(data3[:,0], data3[:,1], c='b')#绘制第3类数据点,蓝色
plt.scatter(center[:,0], center[:,1],100,['#CC3399'],'s')#绘制质心,颜色为#CC3399
plt.show() #显示结果
2.使用k均值聚类算法量化图像颜色
使用k均值聚类算法量化图像颜色,即将质心作为图像新的像素,从而减少图像中的颜色值。
import cv2
import numpy as np
img = cv2.imread('bee.jpg') #打开图像
cv2.imshow('Original',img) #显示原图
img2 = img.reshape((-1,3)).astype(np.float32) #转换为n*3的浮点类型数组

定义算法终止条件

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 4
ret,label,center=cv2.kmeans(img2,K,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)
center = np.uint8(center) #将质心转换为整型
img3 = center[label.ravel()] #转换为一维数组
img3 = img3.reshape((img.shape)) #恢复为原图像数组形状
cv2.imshow('K=4',img3)
cv2.waitKey(0)

目录
相关文章
|
3月前
|
数据采集 机器学习/深度学习 算法
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
本文通过K-Means聚类算法对NBA球员数据进行聚类分析,旨在揭示球员间的相似性和差异性,为球队管理、战术决策和球员评估提供数据支持,并通过特征工程和结果可视化深入理解球员表现和潜力。
123 1
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
|
3月前
|
数据采集 算法 数据可视化
基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好
本文介绍了基于Python实现的k-means聚类分析算法,并通过微博考研话题的数据清洗、聚类数量评估、聚类分析实现与结果可视化等步骤,展示了该算法在文本聚类领域的应用效果。
105 1
|
11天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
1月前
|
算法 数据挖掘
基于粒子群优化算法的图象聚类识别matlab仿真
该程序基于粒子群优化(PSO)算法实现图像聚类识别,能识别0~9的数字图片。在MATLAB2017B环境下运行,通过特征提取、PSO优化找到最佳聚类中心,提高识别准确性。PSO模拟鸟群捕食行为,通过粒子间的协作优化搜索过程。程序包括图片读取、特征提取、聚类分析及结果展示等步骤,实现了高效的图像识别。
|
3月前
|
数据采集 自然语言处理 数据可视化
基于Python的社交媒体评论数据挖掘,使用LDA主题分析、文本聚类算法、情感分析实现
本文介绍了基于Python的社交媒体评论数据挖掘方法,使用LDA主题分析、文本聚类算法和情感分析技术,对数据进行深入分析和可视化,以揭示文本数据中的潜在主题、模式和情感倾向。
162 0
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
281 1
|
3月前
|
数据采集 算法 数据可视化
基于K-Means聚类算法对球员数据的聚类分析,可以自主寻找最优聚类数进行聚类
本文介绍了一个基于K-Means聚类算法的NBA球员数据分析项目,该项目通过采集和分析球员的得分、篮板、助攻等统计数据,使用轮廓系数法和拐点法确定最优聚类数,将球员分为不同群组,并提供了一个可视化界面以便直观比较不同群组的球员表现。
基于K-Means聚类算法对球员数据的聚类分析,可以自主寻找最优聚类数进行聚类
|
3月前
|
人工智能 算法 数据可视化
DBSCAN密度聚类算法(理论+图解+python代码)
DBSCAN密度聚类算法(理论+图解+python代码)
|
3月前
|
算法 前端开发 计算机视觉
基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现
基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现
42 0
|
3月前
|
自然语言处理 并行计算 算法
基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现
基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现
45 0