K_means算法 python实现

1.需要的依赖

import xlrd
import numpy as np
from matplotlib import pyplot as plt

import random
import math

2.数据初始化

这个方案只需要传入三个参数即可

一个是数据维度——dimension

一个是聚类的数量——K

一个是excel表格路径——path

使得循环停下来的标准有两个

最大迭代次数——max_test,直接定为100次,可在代码中修改

最小能容忍的误差——loss,定为0.0000001,可以修改

对于不同的数据,可以用不同的方法,以此对代码进行调整。

质心初始化时,使用

init_centroid()

将质心初始化为0-1内的数,方便后续计算。

整个原始数据需要归一化处理,以此来消除不同维度数据体量不同导致的影响。使用线性变换的方法进行归一化,这样可以不改变原始数据的相对位置。

3.分配数据

利用每个数据与每个质心的欧氏距离来分配数据,靠质心近的数据被分为同一堆。

欧式距离计算公式:

\sqrt{(x1-x2)^{2}+(y1-y2)^{2}+...}

4.更新质心位置

在分配了数据之后,对每一堆数据,重新计算质心位置,以每个维度的平均值来代替原来的质心。

重复多次分配和计算质心之后,当质心稳定在某个值附近时,这个位置就是我们所需要求得的最终的质心位置。

当某个质心没有分配到数据时,将这个质心重置为(0.5, 0.5)也就是中心位置,以此来希望下一次更新时能为其分配数据。

5.使用方法

由于本文将所有函数集成到了一个类中,并由一个函数统一调用

run_kmeans()

所以只需要创建一个变量来调用这个函数即可。

下载地址:

本文代码下载地址

本代码下载无需付费,纯学术交流,如果下载失败请私信

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值