Python版本是Python3.7.3,OpenCV版本OpenCV3.4.1,开发环境为PyCharm
22.2 K均值聚类模块
OpenCV提供了函数cv2.kmeans()来实现K均值聚类。该函数的语法格式为:
retval, bestLabels, centers=cv2.kmeans(data, K, bestLabels, criteria, attempts, flags)
式中各个参数的含义为:
● data:输入的待处理数据集合,应该是np.float32类型,每个特征放在单独的一列中。
● K:要分出的簇的个数,即分类的数目,最常见的是K=2,表示二分类。
● bestLabels:表示计算之后各个数据点的最终分类标签(索引)。实际调用时,参数bestLabels的值设置为None。
● criteria:算法迭代的终止条件。当达到最大循环数目或者指定的精度阈值时,算法停止继续分类迭代计算。该参数由3个子参数构成,分别为type、max_iter和eps。
type表示终止的类型,可以是三种情况,分别为:
● cv2.TERM_CRITERIA_EPS:精度满足eps时,停止迭代。
● cv2.TERM_CRITERIA_MAX_ITER:迭代次数超过阈值max_iter时,停止迭代。
● cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER:上述两个条件中的任意一个满足时,停止迭代。
● max_iter:最大迭代次数。
● eps:精确度的阈值。
● attempts:在具体实现时,为了获得最佳分类效果,可能需要使用不同的初始分类值进行多次尝试。指定attempts的值,可以让算法使用不同的初始值进行多次(attempts次)尝试。
● flags:表示选择初始中心点的方法,主要有以下3种。
● cv2.KMEANS_RANDOM_CENTERS:随机选取中心点。
● cv2.KMEANS_PP_CENTERS:基于中心化算法选取中心点。
● cv2.KMEANS_USE_INITIAL_LABELS:使用用户输入的数据作为第一次分类中心点;如果算法需要尝试多次(attempts 值大于1时),后续尝试都是使用随机值或者半随机值作为第一次分类中心点。
返回值的含义为:
● retval:距离值(也称密度值或紧密度),返回每个点到相应中心点距离的平方和。
● bestLabels:各个数据点的最终分类标签(索引)。
● centers:每个分类的中心点数据。
本文详细介绍了如何使用OpenCV的cv2.kmeans()函数进行K均值聚类,包括函数参数详解及返回值解释,适用于图像处理和数据分析等场景。
2598

被折叠的 条评论
为什么被折叠?



