Предположим, у меня есть такой набор данных:
import numpy as np
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
X,y = make_blobs(random_state=101) # My data
palette = sns.color_palette('bright',3)
sns.scatterplot(X[:,0], X[:,1],palette=palette,hue=y) # Visualizing the data
![enter image description here](https://i.stack.imgur.com/6Jsev.png)
Я хотел бы выбрать данные, которые находятся близко к центру кластера,Скажем, я хочу выбрать данные близко к центру из cluster '0'
, в настоящее время я делаю так:
label_0 = X[y==0] # Want to select data from the label '0'
data_index = 2 # Manaully pick the point
sns.scatterplot(X[:,0], X[:,1],palette=palette,hue=y)
plt.scatter(label_0[data_index][0],label_0[data_index][1],marker='*')
![enter image description here](https://i.stack.imgur.com/67fKB.png)
Так как этоне близко к центру, я меняю индекс и выбираю другой.
data_index = 4
sns.scatterplot(X[:,0], X[:,1],palette=palette,hue=y)
plt.scatter(label_0[data_index][0],label_0[data_index][1],marker='*')
Теперь это близко.Но мне интересно, есть ли более эффективный способ добиться этого?Это возможно для небольшого набора данных, такого как этот, но если мой набор данных имеет тысячи точек, я не думаю, что этот метод будет работать больше.![enter image description here](https://i.stack.imgur.com/MKRZL.png)