Хотите покрасить каждый горшечный кластер разным цветом - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь раскрасить каждый кластер, построенный из DBscan, в другой цвет. Я создал список цветов и попытался сделать так, чтобы код перебирал каждый кластер и наносил на него другой цвет, но он окрашивает все кластеры в один цвет, который является последним цветом из списка цветов (фиолетовый). Буду признателен за помощь.

import pandas as pd
from sklearn.cluster import DBSCAN
from collections import Counter
from sklearn.neighbors import NearestNeighbors
from matplotlib import pyplot as plt
import matplotlib
matplotlib.use('TkAgg')

eps = 4.3


model  = DBSCAN(eps            = eps,
                min_samples    = 210,
                metric         = 'euclidean'
                )

data = model.fit(plotting_data)


X          = plotting_data['X']
Y          = plotting_data['Y']

clusters = data.fit_predict(plotting_data)
print(clusters)

clust_df = pd.DataFrame(plotting_data)


clusters = (clust_df[data.labels_ != -1])



labels = data.labels_
num_clusters = len(set(labels))
print(num_clusters)



color_list = ['green', 'blue', 'red', 'yellow',  'orange',  'magenta', 'cyan', 'purple']
labels = data.labels_
num_clusters = len(set(labels))


i = 0
for col in zip(color_list):
    plt.scatter(clusters['X'],
                clusters['Y'],
                c = col

                )
    i += 1


plt.title("Clusters: " + str(num_clusters), fontsize = 13)

plt.show()

[! [Введите описание изображения здесь] [1]] [1]

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Мне удалось решить эту проблему, поэтому я отвечаю на случай, если кто-то в будущем захочет получить ответ. Все, что мне нужно было сделать, это взять мои данные DBscan и использовать fit_predict с (x, y) точками построения графика (в моем случае «кластерами»).

Примерно так:

color_clusters = data.fit_predict(clusters)

# i = 0
# for col in zip(color_list):

plt.scatter(clusters['X'],
           clusters['Y'],
           c = color_clusters,
           cmap = 'inferno'

           )
plt.colorbar()

0 голосов
/ 20 февраля 2020

Я думаю, что это будет работать:

color_list = np.array(['green', 'blue', 'red', 'yellow',  'orange',  'magenta', 'cyan', 'purple'])

plt.scatter(clusters['X'], clusters['Y'], c = color_list[labels])
plt.show()
...