(это всегда хорошая идея включить ваш соответствующий код в пример, а не в изображениях)
в отчете о классификации говорится, что в тестовом образце есть нули '0, что не соответствует действительности.
Это потому, что из вашего кода в связанном изображении оказывается, что вы переключили аргументы в classification_report
; Вы использовали:
print(classification_report(pred, ytest)) # wrong order of arguments
что действительно дает:
precision recall f1-score support
class 0 0.00 0.00 0.00 0
class 1 1.00 0.63 0.77 171
avg / total 1.00 0.63 0.77 171
но правильное использование (см. документы ):
print(classification_report(ytest, pred)) # ytest first
что дает
precision recall f1-score support
class 0 0.00 0.00 0.00 63
class 1 0.63 1.00 0.77 108
avg / total 0.40 0.63 0.49 171
вместе со следующим предупреждением:
C: \ Users \ Root \ Anaconda3 \ envs \ tensorflow1 \ Lib \ сайт-пакеты \ sklearn \ Метрики \ classification.py: 1135:
UndefinedMetricWarning: точность и F-оценка плохо определены и
устанавливается на 0,0 в метках без прогнозируемых выборок. «Точность»,
«прогнозируемый», средний, warn_for)
потому что, как уже указывалось в комментариях, вы прогнозируете только 1:
pred
# result:
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
Причиной этого является другая история, а не часть текущего вопроса.
Вот полный воспроизводимый код для вышеуказанного:
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True)
xtrain,xtest,ytrain,ytest = train_test_split(X,y,test_size=0.3,random_state=42)
from sklearn.svm import SVC
svc=SVC()
svc.fit(xtrain, ytrain)
pred = svc.predict(xtest)
print(classification_report(ytest, pred))