Scikit-learn сначала вычисляет точность, напоминание и гармоническую F-меру для каждого элемента в вашем наборе списков ([1,1,0,0], [1,0,0,1], [1 , 1,1,1]). Затем он вычисляет среднее значение этих значений точности, среднее значение этих значений возврата и среднее значение этих f-мер и возвращает эти средние значения. Это значения P, R и F, о которых вы сообщаете выше.
Полезно рассчитать значения точности, напоминания и f-меры для одного элемента в вашем списке. Для вычисления значения P, R и F для третьего элемента в списке, вы можете запустить:
import numpy as np
from sklearn import metrics
predict = np.array([[1,1,1,1]])
expect = np.array([[1,0,0,0]])
smp_report = metrics.precision_recall_fscore_support(expect, predict, beta=1, average = 'samples')
f_report = metrics.f1_score(expect, predict, average = 'samples')
print f_report, smp_report
Выполнение этого кода дает 0.4 (0.25, 1.0, 0.40000000000000002)
. Значения внутри скобки указывают точность, напоминание и f-меру для классификации (в указанном порядке). Как вы можете видеть, диафрагменное мера является гармоническое среднее между точностью и отзывом:
2 * [(.25 * 1)/(.25 + 1) ] = .4
Заменив свои первые два списка в коде выше, вы можете вычислить точность, напомним, и гармоническую F- меры по каждому из трех элементов в наборе данных:
первых значений: запись 0.666666666667 (1.0, 0.5, 0.66666666666666663)
второго элемента зНАЧЕНИЕ 0.4 (0.5, 0.33333333333333331, 0.40000000000000002)
третьего элемента значение 0.4 (0.25, 1.0, 0.40000000000000002)
SK затем вычисляет среднюю точность среди этих точных значений (т.е. 1 + 0,5 + 0,25/3 = .5833333333333333
), средние напомнит среди этих значений вызова (.5 + .333 + 1/3 = 0.61111111111111105
), а средняя f-мера среди этих f-мер (.666 + .4 + .4/3 = 0.48888888888888893
) и возвращает эти средние значения. Это значения, о которых вы сообщаете выше. SK вычисляет среднее значение гармоник для каждого классификационного события - оно просто возвращает среднее значение этих гармонических средств.
Извините за ввод в заблуждение, что мне интересно, почему f-оценка НЕ равна гармоническому среднему точности и отзыва, который равен 2 * 0,58 * 0,61/(0,58 + 0,61) = 0,59? Разве это не f-оценка? Различается ли он в многозазорном случае? – Francis
F-оценка * * эквивалентна среднему значению гармоник средней точности и средним значениям отзыва для трех элементов в вашем наборе. SK вычисляет точность каждого события классификации и получает .666, .5 и .25. Затем он принимает среднее значение и получает .583333 (это значение точности, которое вы видите.) Затем он вычисляет значение отзыва для каждого упражнения классификации (.5, .333, .4) и принимает среднее значение (= 0,611). Затем он принимает гармоническую f-меру для каждого экземпляра классификации (.666, .4, .4) и принимает среднее значение (.488). – duhaime
Другими словами, для каждого события классификации SK вычисляет точность и отзыв, затем вычисляет их среднее гармоническое значение. Затем, вычисляя каждое из этих значений для каждого события классификации, SK вычисляет средства этих значений (т. Е. Среднее значение точности в событиях классификации, среднее значение отзыва по событиям классификации и среднюю f-меру по событиям классификации) и возвращает эти средние значения в выводе, который вы публикуете выше. Проясняет ли это? – duhaime