K均值(KMeans)算法原理机器python实现

该博客介绍了K均值(KMeans)聚类算法的基本原理,包括距离计算可采用欧几里得距离等。此外,还详细阐述了如何在Python中利用sklearn库进行KMeans聚类的代码实现。
摘要由CSDN通过智能技术生成

1.算法原理

根据k-均值算法的工作流程,我们可以写出伪代码:

创建k个点作为初始质心(通常是随机选择)
当任意一个点的簇分配结果发生改变时:
		对数据集中的每个点: 
				对每个质心: 
						计算质心与数据点之间的距离
				将数据点分配到据其最近的簇 
		对每个簇,计算簇中所有点的均值并将均值作为新的质心
直到簇不再发生变化或者达到最大迭代次数

距离计算公式可以使用欧几里得距离,曼哈顿距离,闵可夫斯基距离等等,代码展示为了简单使用欧几里得距离。

2.代码实现

import numpy as np
import matplotlib.pyplot as plt

# 计算距离
def euclDistance(vector1, vector2):
    return np.sqrt(sum((vector2 - vector1) ** 2))

# 初始化质心
def initCentroids(data, k):
    numSamples, dim = data.shape
    # k个质心,列数跟样本的列数一样
    centroids = np.zeros((k, dim))
    # 随机选出k个质心
    for i in range(k):
        # 随机选取一个样本的索引
        index = int(np.random.uniform(0, numSamples))
        # 作为初始化的质心
        centroids[i, :] = data[index, :]
    return centroids

# 传入数据集和k的值</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值