Я должен построить границы решения классификатора и выборок (с метками), используемых для обучения классификатора, поэтому я использую график рассеяния и контур.Я не могу найти способ использовать одни и те же цвета для обеих функций, когда я задаю цветовую последовательность, график рассеяния работает хорошо, но цвета границ не следуют порядку, который я ожидаю.
Здесьмой код:
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()
На изображении должны быть области принятия решений и точки разброса с более или менее одинаковыми цветами (т. е. желтая область, где большинство желтых точек, красная область, где большинство красных точек, ии так далее .... с кодом выше цвета смешиваются (т. е. красная область, где большинство желтых точек).
Я полагаю, что это просто проблема порядка, но я не могу понятьэто из.