硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

在 FIFA 20 将技能相似球员进行分组(2):层次聚类

  • 2020-09-22
  • 本文字数:2195 字

    阅读完需:约 7 分钟

在 FIFA 20 将技能相似球员进行分组(2):层次聚类

理解层次聚类

  • 与 K-均值聚类算法(K-means)不同,不需要指定聚类的数量。

  • 结果汇总在树状图,树状图可以方便地解释数据和选择任何数量的聚类。

基本思路

  • 专注 :自下而上(又称凝聚聚类(Agglomerative clustering))

  • 从单个观察开始(又称 叶子 )开始,作为聚类。

  • 通过将叶子合并成 树枝 向上移动。

  • 将树枝与其他叶子或树枝合并。

  • 最终,当所有的东西都合并到一个聚类时,到达顶端。



树状图示例。

解释树状图

  • 在适当的高度上进行切割,以获得所需聚类的 #。

  • 垂直轴:相异度度量(或距离)——两个聚类合并的高度。

  • 高度表示聚类的相似性。

  • 较低的高度更相似

  • 水平轴并不表示相似性。

  • 交换左右分支并不影响树状图的意义。

它如何衡量聚类之间的差异?

  1. 基于度量(最常见的是曼哈顿距离(Manhattan distance)或欧几里得距离(Euclidean distance,亦称欧氏距离))。

  2. 最长距离法(Complete linkage)(即最远邻法(furthest-neighbor))

  3. 最短距离法(Single linkage)(即最近邻法(nearest-neighbor))

  4. 平均距离法(Average linkage)

  5. 质心距离法(Centroid linkage)

  6. 2, 基于相关性的距离

  7. 查找观测值之间的相关性。

层次聚类的缺点

  1. 计算成本高——不适用于大数据集。

  2. ,而表示 K-均值。

  3. 对噪声和离群值敏感。

使用层次聚类对 FIFA20 的球员进行分组

数据清理/预处理(第一部分中的代码)

import pandas as pdimport numpy as npdf = pd.read_csv("/content/players_20.csv")df = df[['short_name','age', 'height_cm', 'weight_kg', 'overall', 'potential','value_eur', 'wage_eur', 'international_reputation', 'weak_foot','skill_moves', 'release_clause_eur', 'team_jersey_number','contract_valid_until', 'nation_jersey_number', 'pace', 'shooting','passing', 'dribbling', 'defending', 'physic', 'gk_diving','gk_handling', 'gk_kicking', 'gk_reflexes', 'gk_speed','gk_positioning', 'attacking_crossing', 'attacking_finishing','attacking_heading_accuracy', 'attacking_short_passing','attacking_volleys', 'skill_dribbling', 'skill_curve','skill_fk_accuracy', 'skill_long_passing', 'skill_ball_control','movement_acceleration', 'movement_sprint_speed', 'movement_agility','movement_reactions', 'movement_balance', 'power_shot_power','power_jumping', 'power_stamina', 'power_strength', 'power_long_shots','mentality_aggression', 'mentality_interceptions','mentality_positioning', 'mentality_vision', 'mentality_penalties','mentality_composure', 'defending_marking', 'defending_standing_tackle','defending_sliding_tackle','goalkeeping_diving','goalkeeping_handling', 'goalkeeping_kicking','goalkeeping_positioning', 'goalkeeping_reflexes']]df = df[df.overall > 86] # extracting players with overall above 86df = df.fillna(df.mean())names = df.short_name.tolist() # saving names for laterdf = df.drop(['short_name'], axis = 1) # drop the short_name columndf.head()
复制代码

标准化数据

from sklearn import preprocessingx = df.values # numpy arrayscaler = preprocessing.MinMaxScaler()x_scaled = scaler.fit_transform(x)X_norm = pd.DataFrame(x_scaled)
复制代码

基于平均距离法的层次聚类

import matplotlib.pyplot as pltimport scipy.cluster.hierarchy as sch# plot dendrogram using average linkageplt.figure(figsize=(10,14))plt.title('Hierarchical Clustering Dendrogram with Average Linkage')dendrogram = sch.dendrogram(sch.linkage(X_norm, method="average"), labels= names, leaf_font_size = 13, orientation='right')
复制代码



  • 分成两组:守门员和其他人

最短距离法

# plot dendrogram using single linkageplt.figure(figsize=(10,14))plt.title('Hierarchical Clustering Dendrogram with Single Linkage')dendrogram = sch.dendrogram(sch.linkage(X_norm, method="single"), labels= names, leaf_font_size = 13, orientation='right')
复制代码



分为守门员和其他人

质心距离法

# plot dendrogram using centroid linkageplt.figure(figsize=(10,14))plt.title('Hierarchical Clustering Dendrogram with Centroid Linkage')dendrogram = sch.dendrogram(sch.linkage(X_norm, method="centroid"), labels= names, leaf_font_size = 13, orientation='right')
复制代码



  • 再次分成守门员和其他人。

最长距离法

# plot dendrogram using complete linkageplt.figure(figsize=(10,14))plt.title('Hierarchical Clustering Dendrogram with Complete Linkage')dendrogram = sch.dendrogram(sch.linkage(X_norm, method="complete"), labels= names, leaf_font_size = 13, orientation='right')
复制代码


结论

最长距离法似乎是将球员进行最准确地分组的方法!


感谢阅读本文,希望对你有所启迪。


本文的 GitHub 仓库:https://github.com/importdata/Clustering-FIFA-20-Players


作者介绍


Jaemin Lee,Jaemin Lee,专攻数据分析与数据科学,数据科学应届毕业生。


原文链接


https://towardsdatascience.com/grouping-soccer-players-with-similar-skillsets-in-fifa-20-part-2-hierarchical-clustering-839705f6d37d?source=---------0-----------------------


2020-09-22 10:031371

评论

发布
暂无评论
发现更多内容

龙蜥社区成立智算基础设施联盟 汇聚产业力量打造 AI 开源新基座

OpenAnolis小助手

开源 AI 操作系统 龙蜥社区 龙蜥智算基础设施联盟

龙蜥开发者说:一位开源贡献者的国产操作系统“铸魂”历程 | 第 33 期

OpenAnolis小助手

操作系统 龙蜥开发者说

基于开发者空间GaussDB云数据库的PLpgSQL实践一

华为云开发者联盟

sql opengauss 华为开发者空间

拆解Agent如何实现“听懂→规划→搞定”全流程

测吧(北京)科技有限公司

人工智能 软件测试 测试开发 agent

行星文化上线华为音乐,沉浸遨游张杰的音乐宇宙

最新动态

用 Pixi 管理 Python 项目:打通Conda 和 PyPI 的边界

肩塔didi

机器学习 开源 rust pip conda

【架构革命】LinkedIn也无法拯救的Kafka:Pulsar 的存算分离成了终极答案?

AscentStream

kafka pulsar linkedin

行程信息一眼掌握!铁路12306接入实况窗带来安心出行新体验

HarmonyOS SDK

HarmonyOS NEXT HarmonyOS SDK应用服务

[鸿蒙征文]Previewer预览器数据模拟

大展红图

HarmonyOS NEXT

Caddy安全插件中的10个安全漏洞分析与修复方案

qife122

网络安全 SSO

低代码新范式:AI设计稿转代码在产品设计的实践落地

职场工具箱

AI 设计 产品设计 UI 代码生成

优化DeepSpeed ZeRO在低成本硬件上的运行效率

qife122

分布式训练 GPU加速

🔥Grok 4 永久免费!深度测评:优势短板一次说清

GPU算力

马斯克 openai grok gpt-5 xAI

dMSA 滥用 (BadSuccessor) 导致权限升级:使用 ADAudit Plus 监控关键属性更改

运维有小邓

日志审计 AD域审计

基于开发者空间GaussDB云数据库的PLpgSQL实践二

华为云开发者联盟

sql opengauss 华为开发者空间

零基础AI编程开发微信小程序赚流量主广告实战

陆通

[意图识别]大模型对话型多Agent协同的绊脚石

小奇同学

智能体 意图识别 智能体调度

企业AI落地开源工具全景图:Dify、RAGFlow、n8n、Coze深度解析与选型指南

测吧(北京)科技有限公司

自动化测试 测试开发 人工智能、 dify

MySQL事务原理:从ACID到隔离级别的全解析

秃头小帅oi

科研环境配置太麻烦?Pixi 一站式帮你搞定!

肩塔didi

人工智能 rust cuda 包管理 科研

通过模糊测试发现燃料虚拟机中定价错误的操作码

qife122

模糊测试 燃料虚拟机

CST软件2023版新功能介绍2:两个提升效率小技巧

思茂信息

仿真 CST软件 CST Studio Suite

甲方视角的“自主可控”:低代码与厂商二次开发的全维度对比

星云低代码中间件

低代码 开发工具 数字化 企业应用

YashanDB TREAT函数

YashanDB

数据库

Dify入门系列(2)| 5 分钟部署 Dify:云服务 vs 本地 Docker

测吧(北京)科技有限公司

人工智能 软件测试 智能体 测试发开 dify

全球社交媒体监控与网络安全的交叉应用场景解读

沃观Wovision

社交媒体 舆情监控 海外舆情监控 沃观Wovision

迈向 AI 驱动的数据平台新时代

Databend

SIEM解决方案怎么选?企业必看的7大核心功能解析

运维有小邓

日志分析 日志管理 SIEM

防止NLP模型更新中的性能回退技术解析

qife122

机器学习 模型优化

使用spaCy和Thinc构建可训练关系抽取组件

qife122

深度学习 关系抽取

行业热点丨智能仿真时代:电子工程多物理场解决方案创新实践

Altair RapidMiner

AI 仿真 PCB CAE 电子工程

在 FIFA 20 将技能相似球员进行分组(2):层次聚类_AI&大模型_Jaemin Lee_InfoQ精选文章