【机器学习】K-means聚类算法(附源码)

本文介绍了K-means聚类算法的基本原理、详细流程,包括从样本集中随机选取初始质心,通过迭代更新质心并进行类别标注,直到质心不再变化或达到预设迭代次数。同时,讨论了算法的优缺点,如易实现、无监督但易受质心影响,以及K值选择的重要性。
摘要由CSDN通过智能技术生成

原理

K-means算法是一种无监督的聚类算法,其利用近邻信息来标注类别。

核心思想:由用户指定的k个初始质心,作为聚类的类别,重复一定迭代次数直至收敛。

 

算法流程

1、从样本集中随机选取k个样本作为初始向量(初始cluster)。

2、对每个样本,计算得到距离其最近的质心,将类别标注为该质心的类。

3、对于每一类,计算新的质心。若质心改变,则更新质心。

停止条件:各类质心均不再发生变化,或达到一定的迭代次数。

 

优缺点

优点:(1)容易实现。(2)无监督

缺点:(1)聚类的结果时局部最优的,容易受到质心的影响。(2)在大规模的数据集上收敛较慢。(3)K值得选择会影响聚类的结果。

 

源码如下

import numpy as np
import matplotlib.pyplot as plt

# 加载数据
def loadDataSet(fileName):
    data = np.loadtxt(fileName,delimiter='\t')
    return data

# 欧氏距离计算
def distEclud(x,y):
    return np.sqrt(np.sum((x-y)**2))  # 计算欧氏距离

# 为给定数据集构建一个包含K个随机质心的集合
def randCent(dataSet,k):
    m,n = da
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值