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)

目录
相关文章
|
6天前
|
机器学习/深度学习 算法 数据挖掘
算法金 | K-均值、层次、DBSCAN聚类方法解析
**摘要:** 这篇文章介绍了聚类分析的基本概念和几种主要的聚类算法。聚类是无监督学习中用于发现数据内在结构的技术,常用于市场分析、图像分割等场景。K-均值是一种基于划分的算法,简单高效但易受初始值影响;层次聚类包括凝聚和分裂方式,形成层次结构但计算复杂;DBSCAN基于密度,能处理任意形状的簇,但参数选择敏感。文章还讨论了这些算法的优缺点和适用场景,并提供了相关资源链接和Python实现。
31 9
算法金 | K-均值、层次、DBSCAN聚类方法解析
|
17天前
|
数据采集 机器学习/深度学习 算法
聚类算法
【6月更文挑战第6天】聚类算法是无监督学习方法,用于将数据集划分成相似样本的类别。常见的聚类算法有K均值、层次聚类和DBSCAN等。在分析时,涉及数据预处理、选择算法、确定聚类数目、执行聚类及评估结果。层次聚类分为自底向上和自顶向下两种,而K-Means是基于质心的聚类算法。评估指标如轮廓系数可衡量聚类效果。聚类过程包括初始化中心、计算样本与中心距离、分配类别和更新中心,直到收敛。
25 2
|
2天前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
5 0
|
2天前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
|
2天前
|
算法 数据挖掘 计算机视觉
程序技术好文:聚类算法一(Kmeans、层次类聚、谱类聚)
程序技术好文:聚类算法一(Kmeans、层次类聚、谱类聚)
|
3天前
|
机器学习/深度学习 算法 数据挖掘
聚类算法:揭秘数据背后的规律
聚类算法:揭秘数据背后的规律
|
3天前
|
算法 数据挖掘 数据库
详尽分享聚类算法实现(二)DBSCAN
详尽分享聚类算法实现(二)DBSCAN
|
8天前
|
机器学习/深度学习 算法 搜索推荐
机器学习聚类算法
聚类算法是无监督学习技术,用于发现数据集中的自然群体,如用户画像、广告推荐等。常见的聚类算法包括K-Means,它基于距离分配样本至簇,适合球形分布;层次聚类则通过合并或分裂形成簇,能发现任意形状的簇;DBSCAN依据密度来聚类,对噪声鲁棒。KMeans API中`sklearn.cluster.KMeans(n_clusters=8)`用于指定簇的数量。评估聚类效果可使用轮廓系数、SSE等指标,Elbow方法帮助选择合适的K值。
|
9天前
|
机器学习/深度学习 算法 数据挖掘
机器学习之聚类——MeanShift算法和图像矢量量化
机器学习之聚类——MeanShift算法和图像矢量量化
9 0
|
10天前
|
机器学习/深度学习 算法 数据可视化
K-means聚类算法:原理、实例与代码分析
K-means聚类算法:原理、实例与代码分析
30 0