背景知识

亚足联AFC:
1954年成立,总部马来西亚吉隆坡。
负责管理亚洲区足球事务,举办各项国家级及俱乐部级赛事,协助国际足联举行世界杯预选赛及4年一度的亚洲杯。
47个成员协会,包括阿富汗、缅甸、中国台北、中国香港、印度尼西亚、日本、韩国、巴基斯坦、菲律宾、新加坡、越南等。
分为两大势力——东亚及西亚,东亚包括有日本、韩国、中国、澳大利亚(来自大洋洲的澳大利亚于2006年加入亚足联),西亚有伊拉克、沙特阿拉伯、阿联酋等。

2018俄罗斯世界杯:
5大洲足联的32支球队参赛
东道主俄罗斯自动获得参赛资格
其余31支通过各大洲足联举办的预选赛事获得参赛资格(如,亚足联举办的亚洲区预选赛)

2018世界杯亚洲区预选赛:
预选赛12强赛,分两组,两组前两名直接晋级世界杯决赛,两组第3名之间的胜者获得附加赛资格。

数据

2019年国际足联的世界排名+2015年亚洲杯排名+2018俄罗斯世界杯排名(只有进入决赛的亚足联国家才有实际排名)
我这里选了20支球队

import pandas as pd
data= pd.read_csv(r"G:\case\data\footballRank.csv")
data.head()
国家 2019国际排名 2018世界杯 2015亚洲杯
0 中国 73 40 7
1 日本 60 15 5
2 韩国 61 19 2
3 伊朗 34 18 6
4 沙特 67 26 10

思路

要用k-means模型,k-means是用距离做相似性度量的,先要做数据标准化,消除不同量纲级别带来的影响,使各维度上的量纲等价。

1、数据标准化
2、建模,用k-means做聚类

创建k-means模型:
KMeans(n_clusters=8, init=‘k-means++’, n_init= 10, max_iter=300, tol=0.0001, precompute_distances=‘auto’, verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm=‘auto’)
n_clusters: 即k值,一般需要多试一些k值。可以随机设置一些k值,选聚类效果最好的。
init: 初始值(初始中心点)选择的方式,默认是采用优化过的k-means++方式。也可以自己指定中心点,或者采用random完全随机的方式,一般推荐用优化过的k-means++方式。自己设置一般是对于个性化的数据进行设置,很少采用。
n_init: 初始化中心点的运算次数,默认是10。模型是否能快速收敛和中心点的选择关系非常大,所以在选中心点上多花一些时间,来争取整体时间上的快速收敛是值得的。每一次中心点是随机生成的,所以要多运行几次,选择最好的做初始中心点。k值比较大,可以适当增大n_init值。
max_iter: 最大迭代次数。如果聚类很难收敛的话,设置max_iter可以确保结束长时间运行。
algorithm: k-means的实现算法,三种取值:“auto”、“full”、“elkan”。推荐采用默认的“auto”。'full’采用传统的K-Means算法,‘auto会根据数据的特点自动选择full还是elkan。

fit(data)可以对data做聚类,predict(data)可以对每一个样本,计算最近的类

实验

1、Z-score标准化

k-means用距离度量相似度,需要做数据规范化,我采用了其中的标准化方法:Z-score。用来消除不同量纲级别带来的误差。

import numpy as np
from sklearn import preprocessing
train_x=data[['2019国际排名','2018世界杯', '2015亚洲杯']]
scaled_x= preprocessing.scale(train_x)
d:\python27\lib\site-packages\ipykernel_launcher.py:1: DataConversionWarning: Data with input dtype int64 were all converted to float64 by the scale function."""Entry point for launching an IPython kernel.
scaled_x
array([[-0.5842676 ,  0.05223517, -0.64677721],[-0.97679881, -2.12423024, -1.03291285],[-0.9466041 , -1.77599577, -1.61211632],[-1.76186121, -1.86305439, -0.83984503],[-0.76543585, -1.16658546, -0.06757374],[-0.04076286,  0.05223517, -1.22598067],[ 0.26118422,  0.05223517,  0.51162973],[-0.34270994,  0.05223517, -0.83984503],[-0.13134698,  0.05223517, -0.45370938],[ 0.89527309,  0.05223517,  1.28390102],[ 0.29137893,  0.92282133,  1.28390102],[-0.16154169,  0.92282133,  0.31856191],[ 0.71410485,  0.92282133,  0.12549408],[ 0.5329366 ,  0.92282133,  0.70469755],[ 2.16345083,  0.92282133,  1.28390102],[-1.58069297, -0.81835099, -1.80518414],[-0.49368348,  0.05223517,  1.28390102],[ 0.77449426,  0.92282133, -0.26064156],[ 2.042672  ,  0.92282133,  0.89776537],[ 0.11021068,  0.92282133,  1.0908332 ]])

2、k-means做聚类

from sklearn.cluster import KMeans

K值选几呢?
选3,将亚洲足球划分为3个梯队

k=3
model= KMeans(n_clusters= k, init='k-means++', n_init=10, max_iter= 300)
clf= model.fit(scaled_x)
pre_y= clf.predict(scaled_x)
#concat合并
result= pd.concat([data, pd.DataFrame(pre_y)], axis=1)
result
国家 2019国际排名 2018世界杯 2015亚洲杯 0
0 中国 73 40 7 1
1 日本 60 15 5 2
2 韩国 61 19 2 2
3 伊朗 34 18 6 2
4 沙特 67 26 10 2
5 伊拉克 91 40 4 1
6 卡塔尔 101 40 13 0
7 阿联酋 81 40 6 1
8 乌兹别克斯坦 88 40 8 1
9 泰国 122 40 17 0
10 越南 102 50 17 0
11 阿曼 87 50 12 0
12 巴林 116 50 11 0
13 朝鲜 110 50 14 0
14 印尼 164 50 17 0
15 澳洲 40 30 1 2
16 叙利亚 76 40 17 0
17 约旦 118 50 9 0
18 科威特 160 50 15 0
19 巴勒斯坦 96 50 16 0

根据聚类结果可以看到:
日本、韩国、伊朗、沙特、澳洲为一梯队
中国、伊拉克、阿联酋、乌兹别克斯坦为一梯队
卡塔尔、泰国、越南、阿曼、巴林、朝鲜、印尼、叙利亚、约旦、科威特、巴勒斯坦为一梯队

用k-means对亚洲足球队做聚类相关推荐

  1. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  2. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  3. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  4. 为了联盟还是为了部落 | K means

    1. 问题 人类有个很有趣的现象,一群人在一起,过一段时间就会自发的形成一个个的小团体.好像我们很擅长寻找和自己气质接近的同类.其实不只是人类,数据也有类似情况,这就是聚类(Clustering)的意 ...

  5. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  6. 文献记录(part89)--I-k-means-+:An iterative clustering algorithm based on an enhanced k -means

    学习笔记,仅供参考,有错必究 关键词:k均值:解决方案改进:准确的k均值:迭代改进 I-k-means-+:An iterative clustering algorithm based on an ...

  7. K means 图片压缩

    k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...

  8. R语言Kmeans聚类、抽取聚类簇:fpc包的kmeansruns函数通过Calinski-Harabasz准则和平均轮廓系数(ASW)为Kmeans选择最优的聚类K值、并与层次聚类的最优K值进行比较

    R语言Kmeans聚类.抽取Kmeans聚类找到的聚类簇:fpc包的kmeansruns函数通过Calinski-Harabasz准则和平均轮廓系数(Average average silhouett ...

  9. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

最新文章

  1. 6.Java集成开发环境
  2. 从方法到实践!深度解读:企业数据治理到底治什么?怎么治?
  3. 【Linux】一步一步学Linux——atrm命令(140)
  4. 随记:Linux中一个修改活动卷组名所引发的血案
  5. 【性能测试】性能测试基础:性能测试的概念、分类、场景和设计要点
  6. python的起源和发展_Python入门第一课——Python的起源、发展与前景!
  7. IAP-应用内购买流程
  8. 在XML文件中定义动画(1)
  9. [USACO11DEC] 牧草种植Grass Planting
  10. Qt 字符编码转换(UTF-8 转换为 GBK)
  11. 程序员前景一片灰暗?网友:不行找个班上吧
  12. 自学笔记----三极管
  13. 各种浏览器的cache文件夹
  14. 计算机机房的消防验收,机房消防标准方案.doc
  15. Android Banner图片轮播第三方框架
  16. 通过 xinput 禁用/启用输入设备
  17. The server encountered an internal error () that prevented it from fulfilling this request.
  18. Quartile收购Sidecar,打造首屈一指的跨渠道电商广告平台
  19. 10个流行常用的Django第三方包-大江狗推荐
  20. 电子邮件发送服务器怎么看钱,验证电子邮件的验证码是发到哪里

热门文章

  1. 摸鱼大闯关(1-10)
  2. E. Anonymity Is Important
  3. 【教程】咕嘎批量文件清单快速查找搜索文件,批量移动复制或批量剪切至新文件夹(批量删除指定文件也可以)
  4. JavaWeb学习笔记(一)---Web相关知识和HTTP协议
  5. 华农java实验7_华南农业大学java实验
  6. C#微信网页授权登录(NET MVC)
  7. php tp5什么是多模块,TP5单入口多域名多模块设置(各端分离)
  8. Python爬虫实战之二 - 基于Scrapy框架抓取Boss直聘的招聘信息
  9. <2021SC@SDUSC>【Overload游戏引擎】代码下载及安装配置
  10. kubernetes 中 calico 组件的 calicoctl 工具的使用示例及 BGP 相关配置