K-means聚类算法-python实现简单示例

本文通过一个简单的K-means聚类算法实例,介绍如何使用Python进行实现。主要内容包括算法的主要步骤、实际代码展示、运行结果及在处理稠密数据时可能遇到的问题。
摘要由CSDN通过智能技术生成

K-means聚类算法-python实现简单示例

想搞点有意思的东西,参考[K-means聚类算法(https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html)做了一些实现。记录如下。

代码主要过程:

  1. 生成数据D(d1,d2,…,di);
  2. 执行分类:
    2.1. 按照group数量,初始化group 中心( u1, u2,…ux);
    2.2. 遍历数据,按照di与各个中心的距离distancex,i,选择distancex,i最小的,作为di的类;
    2.3. 更新分组中心值。对每个分组,取该组所有成员对应坐标的平均值,形成预期的 分组中心A(ah,bh)。将分组中与A距离最近的点(di),作为分组的新中心;
    2.4. 检查所有分组的中心值是否发生变化。如果没有变化,视为训练完成(此处为实现时的逻辑漏洞);如果超过训练次数,则视为训练完成(此处为实现时的逻辑问题,见参考博客,存在严谨的校验方法);
    2.5. 从2.2开始继续训练;
  3. 展示分类结果;

实际代码

# coding=UTF-8

import numpy as np
import math
import matplotlib.pyplot as plt
import copy

class Group(object):
    ''' group structure
    1) mainly provide group_center update;
    2) pay attention that, all members are public,
       no interface is avaliable
    '''
    center_ar = np.array([0, 0])
    members   = []

    def UpCenter(self):
        sum_xy = np.sum(self.members, axis=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值