k-means算法是无监督学习算法,没有标签值,通过自身分析自身的数据,自己进行分类。
此次实现参考了其他博客的实现。
k-means中k的意思表示的是分类数目。
数据集下载地址:链接:http://pan.baidu.com/s/1cfhvAY 密码:7nk8
思想:
1.将数据集中的每条数据视为空间中的一个点
2.随机选取k条作为基准的数据
3.遍历数据集,分别计算每条数据转化为数据点后到每条k中记录的距离,选取距离最短的k作为该条数据的类别
4.遍历完所有数据集后,对所有属于对应的k中的类别的数据进行重新选择中心点操作,可以通过x=(x1+x2+x3+...+xn)/n来计算中心点
5.重复对数据集进行遍历操作,重复步骤3和步骤4,直到中心点不再发生变化为止,此时停止操作。
6.最后数据集所属的类别和各个中心点即为最终分类的结果
算法实现步骤:
1.设计一个方法:导入数据,对数据进行切割,转化为矩阵
2.设计一个方法:计算两个点的距离
3.设计一个方法:随机生成k条作为基准的数据集
4.设计一个方法:遍历所有数据集,对所有数据进行判别类型操作
5.设计一个方法:对最后的中心点、数据集所属的类型、数据集进行数据图展示
python实现:
# coding = utf-8 import numpy import matplotlib.pyplot as plt #导入文件,转化为矩阵返回 def getdatamat(file): file = open(file) lines = file.readlines() arr = [] for line in lines: temp = line.split("\t") arr.append([float(temp[0]), float(temp[1])]) dataset = numpy.mat(arr) return dataset #计算两个数据点之间的距离,返回距离

本文介绍了k-means算法的基本思想和工作流程,这是一个无监督学习方法,用于将数据集自动分类。首先,数据集中的每个样本被视为空间中的点,然后随机选择k个点作为初始聚类中心。接着,计算每个样本到这k个中心点的距离,将其分配给最近的中心点所在的类别。不断迭代,更新中心点直至收敛。文中还给出了Python实现的步骤,并展示了k分别为4、3、2时的分类结果,强调了初始中心点选取对结果的影响。
最低0.47元/天 解锁文章
2万+

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



