机器学习--物以类聚(k-means算法)

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

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)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值