Я обработал свои данные с помощью 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