机器学习与数据挖掘算法--kMeans算法

k-平均算法是一种常见的聚类分析方法,用于将相似对象归类到同一簇中。该算法涉及从数据集中随机选择k个初始质心,然后通过迭代过程重新计算质心并将数据点分配到最近的簇,直到质心不再变化或达到预设阈值。本文介绍了kMeans算法的过程、SSE(误差平方和)作为评价标准,以及二分k-均值算法以避免局部最小值问题。最后,演示了如何使用scikit-learn库实现kMeans算法。
摘要由CSDN通过智能技术生成

k-平均算法源于信号处理中的一种向量量化方法,现在更多作为一种聚类分析方法流行于数据挖掘领域。

聚类是一种无监督学习,它将相似的对象归到同一个簇中。簇内的对象越相似,聚类的效果越好。聚类与分类最大的不同在于,分类的目标事先已知,聚类则不一样。

k-均值是发现给定数据集的k个簇的算法。簇个数k是用户给定的,每个簇通过其质心,即簇中所有点的中心来描述。

目的

把n个点划分到k个聚类中,使得每个点都属于离他最近的均值(即聚类中心)对应的聚类,以此作为聚类的标准。

算法过程

  1. 从N个数据文档随机选取k个数据文档作为质心;
  2. 对剩余的每个数据文档测量其到每个质心的距离,并把它归到最近的质心的类;
  3. 重新计算已经得到的每个类的质心;
  4. 迭代2-3步直至新的质心与原质心相等或小于指定阀值。

程序过程

数据预处理,导入数据做成矩阵。distEclud方法计算两个向量之间的距离。

from numpy import *

def loadDataSet(fileName):
    dataMat = []
    fr = open(fileName)
    for line in fr.readlines():
        curLine = line.strip().split('\t')
        fltLine = map(float, curLine)
        dataMat.append(fltLine)
    return dataMat

def distEclud(vecA, vecB):
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值