我有一组球员和各种数据的数据集。这是该文件的示例。
name nat tm age pos cm kg app \
0 Héctor Bellerín Arsenal es 21 D(R),M(R) 177 74 36
1 Mathieu Debuchy Arsenal fr 31 D(R) 177 76 2
2 Mathieu Flamini Arsenal fr 32 M(C) 178 67 12(4)
3 Petr Cech Arsenal cz 34 GK 196 90 34
4 Alex Oxlade Chamberlain Arsenal eng 23 M(CLR) 180 70 9(13)
min G A yel red spG pa% aerWon moM tac int fouls offW clear drbP \
0 3240 1 5 3 - 0.4 85.7 1.1 1 1.6 1.8 0.5 - 2.4 0.6
1 144 - - - - 0.5 74.7 3 - 4.5 1.5 1.5 - 0.5 0.5
2 1089 - - 3 - 0.4 86.8 0.8 - 1.9 2.2 1.1 0.1 1.6 0.8
3 3060 - - - - - 59 0.2 2 - - - - 1 -
4 925 1 - - - 1 82.5 0.4 - 1 0.5 0.5 - 0.4 0.5
blcks ownG KP drb fouled cOff disp unsT avgP crosses longB thrB season
0 0.2 - 0.7 1.8 0.2 - 1 0.9 46.9 0.5 0.9 0.1 2015-16
1 - - 0.5 0.5 0.5 - 2 0.5 39.5 - 1 - 2015-16
2 0.8 - 0.2 0.1 0.2 - 0.3 0.3 39.3 0.1 1.1 - 2015-16
3 - - - 0.1 0.1 - - - 25.1 - 8.2 - 2015-16
4 0.2 - 0.9 1.7 0.6 0.1 1.1 1.1 20 0.4 1.2 - 2015-16
>>>
关于列Hector Bellerin
,tac
,int
,{{1},我想找到最类似于blcks
(索引= 0)的播放器},unsT
和cOff
。
我如何使用a)完全使用任何手段和b)使用某些聚类或分组机制来实现?我知道人们会使用欧几里得距离来做类似的事情,但是我对方法论并不完全确定。
答案 0 :(得分:1)
这里的每个玩家都是向量,您可以执行任何向量相似度
您的问题的欧几里得距离
player = tac + int + blcks + unsT + cOff + spG
distance(player_1, player_2) = sqrt (sqr(tac_1-tac_2) + sqr(int_1-int_2) + .....)
答案 1 :(得分:1)
此算法称为K均值
K均值是一种聚类算法,它试图将一组点划分为K个集(群集),以使每个群集中的点趋于彼此靠近。它是无监督的,因为这些点没有外部分类。
在此处查看示例:https://towardsdatascience.com/understanding-k-means-clustering-in-machine-learning-6a6e67336aa1
如何应用此方法的简单示例:
from sklearn.cluster import KMeans
import numpy as np
# Your dataset
X = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
# Devide your set into clusters by applying Kmeans algorithm
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
# Examine the labels ( We decide to divide your dataset into 2
#clusters n_clusters=2)
kmeans.labels_
array([1, 1, 1, 0, 0, 0], dtype=int32)
根据标签,您可以看到哪些样本(玩家)具有相似性。