python kmeans代码sse_基本KMeans和二分Kmeans的python实现

本文介绍了Python中实现的基本KMeans算法和二分KMeans算法。基本KMeans通过随机选择质心,不断迭代更新簇分配和质心位置。二分KMeans则是为了避免陷入局部最优,通过不断划分簇来寻找最佳分割,以减少总误差。
摘要由CSDN通过智能技术生成

基本Kmeans算法

import numpy as np

import random

def calc_dist(vec1, vec2):

"""计算两个向量的欧氏距离"""

return np.sqrt(sum(np.power(vec1-vec2, 2)))

def rand_cent(dataSet, k):

"""取k个随机质心,质心的每个特征的值是在数据上下界中随机选取

不一定是数据中包含的值"""

n = shape(dataSet)[1]

centroids = np.mat(np.zeros((k, n)))

for j in range(n):

min_val = min(dataSet[:, j])

range_val = max(dataSet[:, j]) - min_val

centroids[j] = min_val + range_val * random.rand(k, 1)

return centroids

def Kmeans(dataSet, k, dist_eval = calc_dist, create_cent = rand_cent):

"""

创建随机的K个点作为起始质心

当任意一个点的簇分配结果发生改变时:

对数据中的每个数据点:

对每个质心:

计算质心与数据点之间的距离

将数据点分配到距其最近的簇

对每个簇,计算簇中所有点的均值并将其作为质心

""&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值