《机器学习实战》源码解析(八):K均值

本系列以书中源码为主,稍作修改并添加注释,均实际运行可行。为免后来者踩坑,特此公开!欢迎打赏!
转载请注明出处!

#数据清洗函数
#输入:数据源文件
#输出:格式化数据的矩阵形式
def loadDataSet(fileName):
    dataMat =[]
    fr = open(fileName)
    for line in fr.readlines():
        curLine = line.strip().split('\t')#格式化,去除空格以及制表符
        #警告:原书此处为2.0版本,map返回的是地址,需转化为list类型!!!
        fltLine = list(map(float,curLine))#将列表数据改为浮点型,转变为矩阵便于计算
        dataMat.append(fltLine)#将清洗好的每条数据加入列表
    return dataMat
#计算两个向量的欧式距离的平方(关于距离的定义可自由选择)
#输入:任意两个数据点的特征向量(要求是数值型)
def distEclud(vecA,vecB):
    return sqrt(sum(power(vecA-vecB,2)))
#功能:创建一个包含K个随机质心的集合。随机质心必须在整个数据集的边界之内。
#输入:数据集,要创建的质心个数
#输出:K个质心的数据集
def randCent(dataSet,k):
    n = shape(dataSet)[1]#列的数量,即特征值的维度,为循环遍历各维度最值准备
    centroids = mat(zeros((k,n)))#创建K个质心矩阵
    for j in range(n):#对N中每一维
        minJ = min(dataSet[:,j])#获取第j维最小值
        rangeJ = float(max(dataSet
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值