Python实现数据挖掘K-均值算法(欧氏距离)

本文详细介绍了一种基于K均值的算法实现过程,从初始化形心,计算点到形心距离,划分簇,更新形心,到主函数的迭代直至收敛,展示了如何通过一步步操作实现数据聚类分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法实现思路

首先,根据指定的形心标志获取初始形心坐标,将所有形心存储为列表
其次,编写计算所有点到每个形心的距离的方法、根据所有点到每个形心的距离获取新簇的方法、得到新簇的形心的方法
计算所有点到每个形心的距离的方法:遍历形心列表,在内部遍历数据集,计算每个数据集中的每个点到形心的欧式距离平方,将形心和形心与每个点的欧氏距离平方存储为字典,形心为字典键,形心与每个点的欧氏距离为字典值。
根据所有点到每个形心的距离获取新簇的方法:根据所有点到每个形心的距离,将距离某一形心最近的点划分为一簇,存储其对应的点标号(A1、A2等)
得到新簇的形心:根据获得的新簇,计算每一簇所有点坐标的平均值,将其标记为新的形心
最后,编写主函数。首先,获取初始形心坐标,依次调用以下方法直至簇不发生变化(形心也不发生变化),计算所有点到每个形心的距离,获取新簇、获取新的形心,最终获得的簇便是最终结果。

源代码

# -*- coding: utf-8 -*-

"""
@Time        : 2020/12/8
@Author      : lixinci
@File        : 10_2_K均值算法
@Description :
"""
import copy
import operator

dataset = {
   
    "A1": (2, 10), "A2": (2, 5), "A3": (8, 4), "B1": (5, 8),
    "B2": (7, 5), "B3": (6, 4), "C1": (1, 2), "C2": (4, 9)
}


def get_initial_centroids(dataset, centroids):
    """
    得到初始形心
    """
    initial_centroid = []
    for centroid in centroids:
        initial_centroid.append(dataset[centroid]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值