Как найти наиболее похожий элемент из набора для моего тестового элемента в зависимости от определенных критериев? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть набор данных группы игроков и различные характеристики.Вот пример файла.

                      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 (index = 0), относительно столбцов tac, int, blcksunsT, cOff и spG.Как мне добиться того, чтобы а) использовать какие-либо средства вообще и б) использовать определенные механизмы кластеризации или группировки?Я знал людей, которые делали подобные вещи, используя евклидовы расстояния, но я не совсем уверен в методологии.

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Этот алгоритм называется K-means

K-means - это алгоритм кластеризации, который пытается разбить набор точек на 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)

На основеНа ярлыках вы можете увидеть, какие сэмплы (игроки) имеют сходство.

1 голос
/ 09 апреля 2019

у каждого игрока здесь есть вектор, вы можете выполнить любое векторное сходство

Евклидово расстояние для вашей задачи,

player = tac + int + blcks + unsT + cOff + spG
distance(player_1, player_2) = sqrt (sqr(tac_1-tac_2) + sqr(int_1-int_2) + .....)
...