Python机器学习算法实践_自定义实现kmeans

k-means算法步骤:

  • 1.随机选取k个质心(k值取决于你想聚成几类)
  • 2.计算样本到质心的距离,距离质心距离近的归为一类,分为k类
  • 3.求出分类后的每类的新质心
  • 4.判断新旧质心是否相同,如果相同就代表已经聚类成功,如果没有就循环2-3直到相同

 

Python实现

from numpy import  *
def loadDataSet(fileName):
    dataMat=[]
    fr=open(fileName)
    for line in fr.readlines():
        arr=line.strip().split('\t')
        #map (回调函数,列表)-》循环列表中的每个值,调用回归函数得到结果,存到map -》 list
        l=list(map(float,arr))#float 强制类型转换
        dataMat.append(l)
    return dataMat
dataMat=loadDataSet('dataset/testSet.txt')
#距离 度量方式:
#1.欧氏距离
def disEuclid(vecA,vecB):
    return sqrt(sum(power((vecA-vecB),2)))
#测试
vecA=[1.658985,4.285136]
vecB=[-3.453687,3.424321]
disEuclid(mat(vecA),mat(vecB))
#2.余弦
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WJWFighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值