写点什么

在 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:031330

评论

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

指标平台详解(下):第三代指标平台实现了哪些突破?

Aloudata

BI ETL 指标中台; 指标中台

第三届“新科技 星力量” 科技实践案例评选【获奖名单】揭晓

星环科技

大数据 科技 大模型 获奖

星环科技基于第五代英特尔®至强®可扩展处理器的分布式向量数据库解决方案重磅发布

星环科技

大数据 信创 科技 大模型

(保姆级)服务器-Zabbix6.0使用Python脚本实现带图片的邮箱的报警

不在线第一只蜗牛

Python 运维 服务器

软件测试学习笔记丨Grafana安装

测试人

软件测试

实力认可!TDengine 在“2023 年度金猿季”两大榜单中脱颖而出

TDengine

tdengine 时序数据库

“研学测”好帮手,三步带你安装体验TDH社区开发版

星环科技

大数据 信创 科技 大模型

产品解读 | 新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技

大数据 信创 科技 大模型

实现钉钉与宁波银行对接,助力企业实现财务智能化

聚道云软件连接器

案例分享

有了这张微积分知识地图,你可能会爱上高数!

博文视点Broadview

万字图解 | 深入揭秘TCP工作原理

云舒编程

三次握手 TCP协议 TCP四次挥手 MSL 滑动窗口

英特尔实现3D先进封装技术的大规模量产

E科讯

大数据处理流程包括哪些环节

悦数图数据库

大数据处理流程

探索技术的无限可能-云原生计算2023年度奖项

字节跳动云原生计算

大数据 云原生

技术解读 | KunDB助力头部金融机构关键系统的Oracle国产替代

星环科技

oracle 大数据 科技 大模型

聚道云软件连接器1月新增应用/产品更新合集

聚道云软件连接器

功能更新

新书上线 | 《使用 NGINX 部署和保护 Kubernetes Ingress Controller》中文版

NGINX开源社区

nginx Kubernetes API NGINX Ingress Controller NGINX Service Mesh

近6成金融机构的选择!华为云GaussDB加快金融核心系统转型

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

AppLink让你的电商运营财务管理自动化

RestCloud

零代码 APPlink 自动化集成

软件测试学习笔记丨性能测试体系

测试人

软件测试

亚马逊云科技在中国推出数字孪生服务Amazon IoT TwinMaker

财见

这一年我们上线的运维自动化系统

37丫37

DevOps 运维 自动化 工具 开发.

万字图解 | 深入揭秘HTTP工作原理

云舒编程

多路复用 HTTP web socket QUIC 图解网络

图像处理-Java-指定大小压缩

alexgaoyh

Java 图像处理 图像压缩 压缩算法 指定大小

Footprint 的卓越资金流数据揭示加密货币的神秘叙事

Footprint Analytics

区块链 数据分析 加密货币

一分钟了解Wireshark的数据包

小齐写代码

软件测试学习笔记丨JMeter使用代理录制脚本

测试人

软件测试

全面升级!Apache HugeGraph 1.2.0版本发布

百度安全

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