opencv机器学习之K值聚类

本文介绍了OpenCV中的K值聚类原理及应用,包括单特征和多特征数据的聚类示例,以及颜色量化的过程。通过cv2.kmeans()函数,详细解析了各个参数含义,并展示了聚类前后的数据分布对比。
摘要由CSDN通过智能技术生成

1.原理

2.opencv中的K值聚类

代码速记:

  • cv2.kmeans()

参数解释:

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
flags = cv2.KMEANS_RANDOM_CENTERS
compactness, labels, centers = cv2.kmeans(z, 2, None, criteria, 10, flags)

(1)输入参数

  • samples: 应该是np.float32 类型的数据,每个特征应该放在一列。
  • nclusters(K): 聚类的最终数目。
  • criteria: 终止迭代的条件。当条件满足时,算法的迭代终止。它应该是一个含有3 个成员的元组,它们是(typw,max_iter,epsilon):
    • type 终止的类型:有如下三种选择: cv2.TERM_CRITERIA_EPS 只有精确度epsilon 满足是停止迭代。 cv2.TERM_CRITERIA_MAX_ITER 当迭代次数超过阈值时停止迭代。 cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER上面的任何一个条件满足时停止迭代。
    • max_iter 表示最大迭代次数。
    • attempts: 使用不同的起始标记来执行算法的次数。算法会返回紧密度
      最好的标记。紧密度也会作为输出被返回。
  • flags:用来设置如何选择起始重心。通常我们有两个选择:cv2.KMEANS_PP_CENTERScv2.KMEANS_RANDOM_CENTERS

输出参数:

  • compactness:紧密度,返回每个点到相应重心的距离的平方和。
  • labels:标志数组(与上一节提到的代码相同),每个成员被标记为0,1等。
  • centers:由聚类的中心组成的数组。

(1)只有一个特征的数据

假设我们有一组数据,每个数据只有一个特征(1 维)。我们只使用人们的身高来决定T 恤的大小。我们先来产生一些随机数据,并使用Matplotlib 将它们绘制出来。

def one_feature(self):
    #随机产生数据并绘制
    x = np.random.randint(25, 100, 25)#low,high,size
    y = np.random.randint(175, 255, 25)#low,high,size
    z = np.hstack((x, y))
    z = z.reshape((50, 1))#长度为50的列向量
    z 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值