面试手撕代码-k-means算法

本文将介绍如何在[0,10]范围内随机生成10个点,并使用k-means算法进行聚类分析。按照算法步骤,首先随机选择2个点作为初始簇中心,然后遍历样本点将其分配到最近的簇,接着计算代价函数并进行迭代,直到代价函数收敛。这是一个简单的k-means模型实现过程。" 109849655,8729717,Python代码转流程图,"['Python开发', '代码解析', '流程图工具']
摘要由CSDN通过智能技术生成

要求:

随机生成x,y均在[0,10]范围内的10个点,k=2,训练一个简单的k-means模型。

K均值算法步骤如下:

1.在训练样本点中随机初始化[0,10]范围内的k个样本点作为k个簇各自的中心;

2.遍历一遍所有样本点,将每一个样本点分配到最近的簇中心,得到clusterDict。clusterDict的键为centroidList的下标,键值为属于该类的所有样本点。

3.计算第一次聚类迭代得到的结果的代价函数,即每一个样本点到其簇中心的距离的平方和newVar。令oldVar = -1

4.开始迭代,直到代价函数收敛(newVar-oldVar<=0.00001):

      *对于计算每一类样本的均值,作为新的簇中心

      *遍历一遍所有样本点,将每一个样本点分配到最近的簇中心。

 

      

import numpy as np
import matplotlib.pyplot as plt

def getCentroids(clusterDict):
    # 得到k个质心
    centroidList = []
    for key in clusterDict.keys():
        centroid = np.mean(clusterDict[key], axis=0)  # 计算每列的均值,即找到质心
        centroidList.append(centroid)
    return np.array(centroidList).tolist()

def getVar(clusterDict,centroidList):
    # 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值