1.k-means算法步骤详解 Show 使用2维的样本进行讲解,用x-y坐标系表示就是sample=(x, y),比如sample=(1,3)。其他n维度样本的k-means算法步骤也是一样,不影响理解,都是一样的道理。 1.1算法步骤Step1.给定初始质心:首先选取初始质心集合centroids
Step2.样本聚类:计算每个样本和每个质心的距离,将样本聚类到距离最近的质心的簇里面
Step3.重新计算质心:每个簇的新质心的属性值等于此簇中所有样本的属性值得平均值
Step4.是否停止K-means:给定loop最大次数loopLimit 以及 所有质心变化距离的最大值maxDistance
Step5. 如果step4没有结束k-means,就再执行step2-step3-step4-step5 如果step4结束了k-means,则就打印(或绘制)簇以及质心 1.2样本和质心之间距离的度量方法在上面step2样本聚类步骤中我们使用欧氏距离作为样本和质心之间距离的度量方法。 也可以使用其他的距离度量方法,下面是常用的距离度量方法有: 1.2.1 欧氏距离 1.2.2 曼哈顿距离: 1.2.3 余弦相似度: 欧氏距离会受指标不同单位刻度(量纲不同)的影响,所以一般需要先进行标准化,同时距离越大,个体间差异越大; 空间向量余弦夹角的相似度度量不会受指标刻度的影响,余弦值落于区间[-1,1],值越大,差异越小。 2.用样本数据集实例详解k-means算法过程 2.1样本数据集
即6个样本:(1, 1), (2, 2), (3, 1), (6, 4), (7, 5), (8, 4) 绘制结果如下: 2.2给k-means算法结束的条件 给定loopLimit = 100, maxDistance=1 2.3给定初始质心由于是样本数据集讲解k-means算法,这里初始质心是看着绘制结果图给定的,可以知道理想结果是k=2 就选取样本集的前k个样本数据作为初始质心 (1,1), (2,2) 结论:k = 2, centroids = [[1,1], [2,2]] 2.4样本聚类+重新计算质心直到停止k-means算法=====================第一次k-means算法======================= 第一次样本聚类: 用字典dict存储簇,重置簇clusters={}
new clusters = {0: [[1, 1]], 1: [[2, 2], [3, 1], [6, 4], [7, 5], [8, 4]]} 计算新的质心 centroid_1 = [1, 1] = [1/1, 1/1] centroid_2 = [5.20, 3.20] = [(2 + 3 + 6 + 7 + 8)/5, (2 + 1 + 4 + 5 + 4)/5] centroids = [[1,1], [5.20, 3.20]] 第一次k-means的结果
判断是否结束k-means算法
结论:需要继续K-means算法,下面开始第二次K-means算法 ==================第二次k-means算法====================== 第二次样本聚类: 用字典dict存储簇,重置簇clusters={}
clusters = {0: [[1, 1], [2, 2], [3, 1]], 1: [[6, 4], [7, 5], [8, 4]]} 第二次计算新的质心 centroid_1 = [2.0, 1.33] = [(1+2+3)/3, (1+2+1)/3] centroid_2 = [7.0, 4.33] = [(6 + 7 + 8)/3, (4 + 5 + 4)/3] centroids = [[2.0, 1.33], [7.0, 4.33]] 第二次k-means的结果
判断是否结束k-means算法
结论:需要继续K-means算法,下面开始第三次K-means算法 ==================第三次k-means算法====================== 第三次样本聚类: 用字典dict存储簇,重置簇clusters={}
clusters ={0: [[1, 1], [2, 2], [3, 1]], 1: [[6, 4], [7, 5], [8, 4]]} 第三次计算新的质心 centroid_1 = [2.0, 1.33] = [(1+2+3)/3, (1+2+1)/3] centroid_2 = [7.0, 4.33] = [(6 + 7 + 8)/3, (4 + 5 + 4)/3] centroids = [[2.0, 1.33], [7.0, 4.33]] 第三次k-means的结果
判断是否结束k-means算法
结论:需要继续K-means算法,下面开始第四次K-means算法 ==================第四次k-means算法====================== 第四次样本聚类: 用字典dict存储簇,重置簇clusters={}
clusters ={0: [[1, 1], [2, 2], [3, 1]], 1: [[6, 4], [7, 5], [8, 4]]} 第四次计算新的质心 centroid_1 = [2.0, 1.33] = [(1+2+3)/3, (1+2+1)/3] centroid_2 = [7.0, 4.33] = [(6 + 7 + 8)/3, (4 + 5 + 4)/3] centroids = [[2.0, 1.33], [7.0, 4.33]] 第四次k-means的结果
判断是否结束k-means算法
结论:结束k-means算法,最终的簇和质心为: clusters ={0: [[1, 1], [2, 2], [3, 1]], 1: [[6, 4], [7, 5], [8, 4]]} centroids = [ [2.0, 1.33], [7.0, 4.33]] 2.5k-means结果打印
2.6结果绘制图形(end) 如果还不懂,请板儿砖扔过来。 |