Я занимаюсь анализом/классификацией текста и пытаюсь оценить производительность с помощью функции precision_recall_fscore_support
из модуля sklearn.metrics
. Я не уверен, как я могу создать действительно небольшой пример, воспроизводящий проблему, но, возможно, кто-то может помочь даже в этом случае, потому что это что-то очевидное, что мне не хватает.
Вышеупомянутая функция возвращает среди прочего поддержку для каждого класса. В документации указано
поддержка: целое число (если среднее значение не равно None) или массив целых чисел, shape = [n_unique_labels]: количество вхождений каждой метки в y_true.
Но в моем случае количество классов, для которых возвращается поддержка, не совпадает с количеством разных классов в данных тестирования.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)
classifier = svm.SVC(kernel="linear")
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
prec, rec, fbeta, supp = precision_recall_fscore_support(y_test, y_pred)
print(len(classifier.classes_)) # prints 18
print(len(supp)) # prints 19
print(len(np.unique(y_test))) # prints 18
Как это может быть? Как может быть поддержка класса, которого нет в данных?