《机器学习实战》源码解析(一)K-means

本文详细解析了《机器学习实战》中K-means算法的源码,通过亲手实践并添加注释,旨在帮助读者深入理解该算法,避免在学习过程中遇到困扰。
摘要由CSDN通过智能技术生成

所有源码经本人手撸实战,并一一注释。现公之于众,以免后来人踩坑!

from numpy import *
#数据清洗函数
#输入:数据源文件
#输出:格式化数据的矩阵形式
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
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值