Поскольку у вас есть проблема классификации с несколькими классами, вы можете рассчитать точность классификатора, используя функцию confusion_matrix
в Python.
Чтобы получить общую точность, сложите значения в диагонали и разделите сумму на общее количество выборок.
Рассмотрим следующую простую мультиклассовую классификацию пример с использованием набора данных IRIS:
import itertools
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
# import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names
# Split the data into a training set and a test set
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Run classifier, using a model that is too regularized (C too low) to see
# the impact on the results
classifier = svm.SVC(kernel='linear', C=0.01)
y_pred = classifier.fit(X_train, y_train).predict(X_test)
Теперь, чтобы вычислить общую точность, используйте матрицу путаницы:
conf_mat = confusion_matrix(y_pred, y_test)
acc = np.sum(conf_mat.diagonal()) / np.sum(conf_mat)
print('Overall accuracy: {} %'.format(acc*100))