【ML】KMeans 原理 + 实践(基于sklearn)

16 篇文章 0 订阅
12 篇文章 0 订阅

原理

下面做原理简要介绍:

  1. KMeans是一个非监督学习算法,对于关键的K值即我们希望将样本分为几类,一般情况下可以根据经验划分(根据不同的领域,领域专家可以给出建议),或者多次尝试找最好的值(手肘法,参考下文连接)。
  2. 选择好K值后,再从样本中随机的选取K个点作为初始化中心点。
  3. 然后依次计算剩余点与每个初始化中心点的距离(距离有很多种,比如欧式距离、曼哈顿距离),将每个点划分到最近的初始化中心点的分类中。
  4. 将归类后的点重新计算质心作为新的中心点(根据计算距离方式不同可以有不同的计算方式,比如:计算所在分类所有点各个维度的平均值作为新的中心点,举例:有两个维度x,y, 经过一轮计算一个分类下有3个点,分别为:{(x1,y1),(x2,y2),(x3,y3)},则新的中心点为:( (x1+x2+x3)/3, (y1+y2+y3)/3 ))
  5. 回到第三步(直到中心点稳定,不变/或者新点的距离和旧点距离小于一个阈值,或者迭代达到最大次数,则结束)

(其他更详细的参考:https://zhuanlan.zhihu.com/p/184686598)

读取数据

import numpy as np
import pandas as pd
data = pd.read_csv('/kaggle/input/xclara/xclara.csv')
data.head()

输出:

V1V2
02.072345-3.241693
117.93671015.784810
21.0835767.319176
311.12067014.406780
423.7115502.557729

可视化数据(观察规律)

from matplotlib import pyplot as plt
V1 = data.loc[:,'V1']
V2 = data.loc[:,'V2']
plt.scatter(V1,V2)

在这里插入图片描述

训练

from sklearn.cluster import KMeans
KM = KMeans(n_clusters=3)
KM.fit(data)

预测 + 可视化

predict = KM.predict(data)

plt.scatter(V1[predict==0],V2[predict==0])
plt.scatter(V1[predict==1],V2[predict==1])
plt.scatter(V1[predict==2],V2[predict==2])
plt.show()

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值