Я пытаюсь построить приблизительные границы (основанные на евклидовом расстоянии до ближайшего центроида кластера с шагом 0,25) между кластерами, используя scikit-learn и matplotlib.
Я не могу получить цвета pcolormesh длясоответствует цветам точек на графике, выходящих из цикла for.
В случае цикла for кластерам присваивается цвет, основанный на их индексе.Например.km.labels [0] получает первый цвет в моей карте, km.labels 1 получает второй и т. д.
Хотя цвета для графика pcolormesh, который я подозреваю,распределяется в зависимости от того, когда этот индекс кластера впервые появляется в массиве.Например.clus_lab_mesh [0,0] (значение первой строки, столбца в этом 2d-массиве) принадлежит моему третьему кластеру (т.е. km.labels [2]).
Я пробовал разные вещи, такие как нормализация без решения проблемы.Я также не могу просто отсортировать возрастающий массив 2d mesh, так как это испортит позиции с моими значениями x и y.
Я не включаю полный код, так как он довольно длинный и находится внутри большего размера дляцикл для запуска k означает для разных значений k.Я надеюсь, что ниже достаточно, чтобы объяснить проблему.Спасибо!
x_mesh, y_mesh = np.meshgrid(x,y)
clus_lab_mesh = clus_lab0.reshape(x_mesh.shape)
cmap = cm.get_cmap('tab10')
colors = [cmap(0), cmap(1), cmap(2), cmap(3), cmap(4), cmap(5), cmap(6), cmap(7), cmap(8),cmap(9)]
plt.figure()
for j in range( M ):
plt.plot( X[j:,2], X[j:,5], marker="o", markeredgecolor='w', linestyle="", markerfacecolor=colors[km.labels_[j]], markersize=7)
plt.pcolormesh(x_mesh, y_mesh, clus_lab_mesh, shading="flat", cmap="tab10", vmin=0, vmax=cmap.N
plt.show()
