机器学习实战笔记——k-means算法

一、算法原理

    k-均值算法是一种无监督学习算法。在输入数据集中不包括标签,通过k-均值算法为每个样本添加标签,相同标签样本具有共同特征。

    对于数据集D={x1,x2,...,xm},划分为k个簇C1,C2,...,Ck。对象与该簇的距离用dist(p,Ci)表示,其中dist(x,y)是两点x和y之间的欧式距离。最小化平方差

也就是对于每个簇中的每个对象,求对象到簇中心距离的平方,然后求和。E越小说明簇越紧凑,聚类效果越好。


k-均值算法流程如下:

(1)先在D中随机选取k个对象,作为k个簇的初始值;

(2)对剩下的每个对象,按照欧氏距离最小原则,将它分配到最相似的一个簇(用距离刻画);

(3)重新计算每个簇的均值作为新的聚类中心

(4)重复(2)(3)步骤,直到中心值不再变化或者变化很小时,聚类完成。

输入:
  k:簇的数目
  D:包含n个对象的数据集
输出:k个簇的集合
方法:
(1)从D中任意选择k个对象作为初始簇中心;
(2)repeat
(3)  根据簇中对象的均值,将每个对>象分配到最相似的簇;
(4)  更新簇均值,即重新计算每个簇中对象的均值;
(5)util不在发生变化;

2、代码部分



import numpy as np

def loadDataSet(fileName):      #general function to parse tab -delimited floats
    dataMat = []                #assume last column is target value
    fr = open(fileName)
    for line in fr.readlines():
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值