Визуализация ошибки классификации ближайшего соседа - PullRequest
0 голосов
/ 26 февраля 2020

Я обработал свои данные с помощью KNeighboursClassifier следующим образом, и мне нравится визуализировать свой результат. Не могли бы вы посоветовать, где в строке кода мне нужно настроить, чтобы соответствовать графику?

Это как-то связано с типом обучающих данных?

KNN Модель:

%%time

from sklearn.neighbors import KNeighborsClassifier
knn2 = KNeighborsClassifier(n_neighbors=3, weights='distance', algorithm='auto', p=2)
knn2.fit(ros_x,ros_y)
knn2_y_pred=knn2.predict(test_x)

Визуальный график

from sklearn import metrics
print("Accuracy:",metrics.accuracy_score(test_y, knn2_y_pred))
print(classification_report(test_y,knn2_y_pred))
# confusion matrix to evaluate predictions
pd.crosstab(test_y, knn2_y_pred, rownames=['Observed'], colnames=['Predicted'])

# Plot non-normalized confusion matrix
titles_options = [("Confusion matrix, without normalization", None),
                  ("Normalized confusion matrix", 'true')]
class_names = df3["SeverityLevel"]
for title, normalize in titles_options:
    disp = plot_confusion_matrix(knn2, test_x, test_y,cmap=plt.cm.Blues,
                                 normalize=normalize, values_format='.5g')
    disp.ax_.set_title(title)

    print(title)
    print(disp.confusion_matrix)

plt.show()

Сообщение об ошибке:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-612-f6933ca42509> in <module>
     24 
     25 # calculate min, max and limits
---> 26 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
     27 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
     28 xx, yy = np.meshgrid(np.arange(x_min, x_max, h),

~/.local/lib/python3.5/site-packages/pandas/core/frame.py in __getitem__(self, key)
   2973             if self.columns.nlevels > 1:
   2974                 return self._getitem_multilevel(key)
-> 2975             indexer = self.columns.get_loc(key)
   2976             if is_integer(indexer):
   2977                 indexer = [indexer]

~/.local/lib/python3.5/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2888                 )
   2889             try:
-> 2890                 return self._engine.get_loc(key)
   2891             except KeyError:
   2892                 return self._engine.get_loc(self._maybe_cast_indexer(key))

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

TypeError: '(slice(None, None, None), 0)' is an invalid key
...