zhangtt123 发表于 2020-6-11 10:07

python实现K-means算法(步骤详细)

K-means 聚类算法


[*]特点

[*]对初始化敏感。初始点选择的不同,可能会产生不同的聚类结果
[*]最终会收敛。不管初始点如何选择,最终都会收敛
[*]算法思想
  
代码实现实验目的
[*]根据下列成绩单,将5名同学成绩归为A类、B类、C类。
[*]限制:使用Kmeans算法实现,但不直接调用sklearn第三方库的KMeans函数。


学生姓名小测1小测2小测3期末成绩项目答辩成绩
张三1215132824?
李四711101921?
王五1214112723?
赵六6741320?
刘七1314132725?

实验步骤1. 数据准备
[*]将数据储存为csv文件,格式如下
[*]在从csv文件中读取数据,并选取可用的数据(排除姓名列)
2. KMeans算法实现
[*]KMeans算法涉及两点之间距离的计算,我们提前写好一个函数:输入两个点的坐标,返回两点之间的欧氏距离
[*]函数k_means(c,data,max,label)实现KMeans算法:
[*]a. 输入:质心列表c,待聚类数据data,最大迭代次数max,标签列表label
[*]b. 计算data中的每个点分别到3个质心的欧式距离,得到一个矩阵metrix
[*]
[*]c. 比较矩阵metrix同一列的数值大小,将对应的学生划归距离较短的质心所属的类,将标签存储为列表.
[*]
[*]d. 重新计算质心的坐标,新质心的坐标=被划归同一类点的坐标的平均值
[*]
[*]e. 重复b~d,直到质心坐标不再变化或达到最大迭代次数f. 返回标签列表

[*]完整函数如下
[*]
3. 设置参数,调用函数,得到结果
[*]设置初始质心、标签列表、最大迭代次数
[*]调用函数,整理结果
[*]
实验结果
[*]初始质心为, [ 7, 11, 10, 19, 21],时,迭代2次即收敛,结果如下


学生姓名小测1小测2小测3期末成绩项目答辩成绩
张三1215132824A
李四711101921B
王五1214112723C
赵六6741320B
刘七1314132725A


原文地址:
https://blog.csdn.net/qq_39753778/article/details/106159732?utm_medium=distribute.pc_category.319779.nonecase&depth_1-utm_source=distribute.pc_category.319779.nonecase


七点半的眼睛 发表于 2020-6-14 10:14

发表回666666666666
页: [1]
查看完整版本: python实现K-means算法(步骤详细)