Используйте одинаковые цвета для разброса и контура на одном графике - PullRequest
0 голосов
/ 01 января 2019

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

Здесьмой код:

import numpy as np
import sklearn.naive_bayes as nb
import matplotlib.pyplot as plt
clf = nb.GaussianNB() 
X = np.zeros((4, 2), dtype=int)
X[0, :] = 10
X[1, :] = 20
X[2, :] = 30
X[3, :] = 40
Y = [0, 1, 2, 3]
clf.fit(X, Y)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min, y_max,0.1))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.figure(figsize=(8,8))
colors_ = ['red', 'yellow', 'cyan', 'blue']
plt.contourf(xx, yy, Z, colors=colors_, alpha=0.5)
labels = ['dog', 'guitar', 'house', 'person']
for i in np.unique(Y):
    mask = Y == i
    plt.scatter(X[mask, 0], X[mask, 1], c=colors_[i], label=labels[i], 
edgecolors='k', alpha=0.8)
plt.legend()
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title('Decision Boundaries of Naive Bayes Classifier')
plt.show()

На изображении должны быть области принятия решений и точки разброса с более или менее одинаковыми цветами (т. е. желтая область, где большинство желтых точек, красная область, где большинство красных точек, ии так далее .... с кодом выше цвета смешиваются (т. е. красная область, где большинство желтых точек).

Я полагаю, что это просто проблема порядка, но я не могу понятьэто из.

...