图中的数据可以分成三个分开的点集(称为族),一个能够分出这些点集的算法,就被称为聚类算法
K-means算法是一种无监督学习方法,是最普及的聚类算法,算法使用个没有标签的数据集,然后将数据聚类成不同的组K-means算法具有一个迭代过程,在这个过程中,数据集被分组成若干个预定义的不重叠的聚类或子组,使簇的内部点尽可能相似,同时试图保持簇在不同的空间,它将数据点分配给簇,以便簇的质心和数据点之间的平方距离之和最小,在这个位置,簇的质心是簇中数据点的算术平均值。
详细可以看我之前的博客 度量距离
闵可夫斯基距离(Minkowski distance)
当
p
p
p取无穷时的极限情况下,可以得到切比雪夫距离。
距离公式:
d ( x , y ) = ( ∑ i ∣ x i ? y i ∣ p ) 1 p d\left( x,y \right) = \left( \sum_{i}^{}|x_{i} - y_{i}|^{p} \right)^{\frac{1}{p}} d(x,y)=(i∑?∣xi??yi?∣p)p1?
现在我们需要找到簇的数量。通常通过“时部法则”进行计算。我们可能会得到一条类似于人的时部的曲线。右图中,代价函数的值会迅速下降在K = 3的时候达到一个时点。在此之后,代价函数的值会就下降得非常慢,所以,我们选择K = 3。这个方法叫“时部法则”
到这里,如果还有什么疑问欢迎私信、或评论博主问题哦,博主会尽自己能力为你解答疑惑的!
如果对你有帮助,你的赞和关注是对博主最大的支持!!
下次我将准备实现K-means算法