14天阅读挑战赛

KMeans聚类

 什么是聚类任务

  • 1 无监督机器学习的一种
  • 2 目标将已有数据根据相似度划分到不同的簇
  • 3 簇内样本彼此之间越相似,不同簇的样本之间越不相似,就越好

为什么叫KMeans聚类

  • 1 也可以叫K均值聚类
  • 2 K是最终簇数量,它是超参数,需要预先设定
  • 3 在算法计算中会涉及到求均值

 KMeans流程

  • 1 随机选择K个簇中心点
  • 2 样本被分配到离其最近的中心点
  • 3 K个簇中心点根据所在簇样本,以求平均值的方式重新计算
  • 4 重复第2步和第3步直到所有样本的分配不再改变

 如何计算样本到中心点的距离

1. 欧氏距离测度 Euclidean Distance Measure

欧氏距离越大,相似度越低

2. 余弦距离测度 Cosine Similarity Measure

夹角越大,余弦值越小,相似度越低

因为是cosine,所以取值范围是-1到1之间,它判断的是向量之间的 方向而不是大小;两个向量有同样的方向那么cosine相似度为1,两 个向量方向相对成90°那么cosine相似度为0,两个向量正相反那么 cosine相似度为-1,和它们的大小无关。

选择Cosine相似度还是欧氏距离

总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向 上的相对差异。

例如,统计两部剧的用户观看行为,用户A的观看向量为(0, 1),用户B为(1,0);此时二者的余弦距离很大,而欧氏距离很 小;我们分析两个用户对于不同视频的偏好,更关注相对差异,显 然应当使用余弦距离。 而当我们分析用户活跃度,以登陆次数(单位:次)和平均观看时长 (单位:分钟)作为特征时,余弦距离会认为(1,10)、(10, 100)两个用户距离很近;但显然这两个用户活跃度是有着极大差 异的,此时我们更关注数值绝对差异,应当使用欧氏距离。

KMeans算法目标函数

上面的公式既是要去最小化的目标函数,同时也可以作为评价 KMeans聚类效果好坏的评估指标。

 KMeans算法不保证找到最好的解

事实上,我们随机初始化选择了不同的初始中心点,我们或许会获 得不同的结果,就是所谓的收敛到不同的局部最优;这其实也就从 事实上说明了目标函数是非凸函数。

一个通常的做法就是运行KMeans很多次,每次随机初始化不同的 初始中心点,然后从多次运行结果中选择最好的局部最优解。

KMeans算法K的选择

没有所谓最好的选择聚类数的方法,通常是需要根据不同的问题, 人工进行选择的。

肘部法则(Elbow method)

改变聚类数K,然后进行聚类,计算损失函数,拐点处即为推荐的聚 类数 (即通过此点后,聚类数的增大也不会对损失函数的下降带来很 大的影响,所以会选择拐点)。

目标法则

如果聚类本身是为了有监督任务服务的(例如聚类产生features 【譬如KMeans用于某个或某些个数据特征的离散化】然后将 KMeans离散化后的特征用于下游任务),则可以直接根据下游任 务的metrics进行评估更好。

KMeans实战案例-NBA球队实力聚类分析

导包

from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import MinMaxScaler

导入数据

data = pd.read_csv('nba.csv')
data.head()

处理数据

minmax_scaler = MinMaxScaler()
# 标准化数据
X = minmax_scaler.fit_transform(data.iloc[:,1:])

使用肘部法则确定聚类的K值

# 肘部法则
loss = []
for i in range(2,10):model = KMeans(n_clusters=i).fit(X)loss.append(model.inertia_)plt.plot(range(2,10),loss)
plt.xlabel('k')
plt.ylabel('loss')
plt.show()

使用肘部法则,我们一般选取的是曲线平缓的时候,这里我们选取4作为K值

k = 4
model = KMeans(n_clusters=k).fit(X)
# 将标签整合到原始数据上
data['clusters'] = model.labels_
data.head()

查看聚类统计结果

for i in range(k):print('clusters:',i)label_data = data[data['clusters'] == i].iloc[:,0]print(label_data.values)

机器学习之KMeans聚类算法原理(附案例实战)相关推荐

  1. 【机器学习】—— K-means聚类算法原理详解 以及 二维、三维数据的K-means聚类Python实现

    文章目录 一.K-Means聚类算法原理过程 1.1 K-means聚类的一些细节 1.1.1 样本x(i)x^{(i)}x(i)与中心点μkμ_kμk​距离的衡量 1.1.2 K-means聚类算法 ...

  2. K-means 聚类算法的应用案例实战(含代码和图示)

    1.算法优缺点 优点:容易实现 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢 使用数据类型:数值型数据 2.算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相 近关系 ...

  3. Python大数据综合应用 :零基础入门机器学习、深度学习算法原理与案例

    机器学习.深度学习算法原理与案例实现暨Python大数据综合应用高级研修班 一.课程简介 课程强调动手操作:内容以代码落地为主,以理论讲解为根,以公式推导为辅.共4天8节,讲解机器学习和深度学习的模型 ...

  4. 机器学习:k-means聚类算法+算法优化

    第六章:机器学习course02:k-means聚类算法 标签(空格分隔): 10-机器学习 $---by:Rianusr$ ##1 课题导入 ###1.1 k-means常见的应用场景 ![imag ...

  5. 人工智能AI常见的经典K-means聚类算法原理和工作过程

    K-means聚类算法亦称K聚类均值算法,K-means算法是硬聚类算法中的一种.聚类算法是一类无监督机器学习.K-means算法是计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法.K-me ...

  6. python k-means聚类算法 物流分配预测实战(超详细,附源码)

    数据集和地图可以点赞关注收藏后评论区留下QQ邮箱或者私信博主要 聚类是一类机器学习基础算法的总称. 聚类的核心计算过程是将数据对象集合按相似程度划分成多个类,划分得到的每个类称为聚类的簇 聚类不等于分 ...

  7. Kmeans++聚类算法原理与实现

    1 引例 在上一篇文章中,笔者介绍了什么是聚类算法,并且同时还介绍了聚类算法中应用最为广泛的KmeansKmeansKmeans聚类算法.从KmeansKmeansKmeans聚类算法的原理可知,Km ...

  8. k-means聚类算法原理与参数调优详解

    https://www.toutiao.com/a6690435044869145101/ k-means算法原理 K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初 ...

  9. K-means聚类算法原理与实现——笔记梳理

    转载于:https://www.toutiao.com/a6690435044869145101/ 转载于:https://blog.csdn.net/ten_sory/article/details ...

最新文章

  1. c++函数重载机制实现原理
  2. Redis 从入门到起飞(下)
  3. 用电脑发短信_丢掉你的手机数据线吧!用这个软件轻松在任何设备互传文件
  4. 3.git版本控制-管理修改、撤销、删除
  5. 利用JMF进行多媒体编程
  6. 技术宝典 | WebRTC ADM 源码流程分析
  7. 【聊一聊】css中的经典布局——圣杯布局
  8. java 从控制台读取_转载 java从控制台读取输入的方法
  9. uniapp返回上一页_uniapp怎么调用扫一扫功能?
  10. 推荐系统遇上深度学习(六)--PNN模型理论和实践
  11. java枚举来实现单例_枚举实现单例模式
  12. 这篇带你深入理解SpringBoot中的自动装配(好文精读)
  13. RxAndroid 的基本使用
  14. 让 API 端点的响应速度提高 50 倍!
  15. upload-labs19记录
  16. Cisco Packet Tracer安装教程
  17. 什么是网络,网络类型,网络结构
  18. PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
  19. python数据按照分组进行频率分布_3.2.1 分布分析
  20. 电容实际等效模型(容抗、感抗、品质因数Q)

热门文章

  1. java人职业规划(摘要)
  2. ps基础学习:用形状工具制作交通标识
  3. Apache Superset 开源商业智能大数据可视化
  4. 如何在千亿级市场的生鲜水果社区团购大战中脱颖而出?
  5. 项目管理软件dhtmlxGantt配置教程(一):指定列设置
  6. python读取odb_如何使用python脚本更新Abaqus odb文件的节点值?
  7. 节点还没注册,LoRa网关就收到数据是怎么回事
  8. OmniGraffle 7.2 for Mac
  9. 计算机网络之常见命令
  10. Prodigal基因预测