Я выполнил некоторую двоичную классификацию в pySpark и сейчас пытаюсь проверить точность. Поскольку я использовал multiClassMetrics, я передал 'label = 1' как для возврата, так и для точности, но это не работает для fMeasure. Мне интересно, есть ли обходной путь для этого. Спасибо за вашу помощь.
# Metrics
results = gbt_predictions.select(['prediction', 'label'])
predictionRDD = results.rdd
metrics = MulticlassMetrics(predictionRDD)
# Confusion Matrix
cm = metrics.confusionMatrix().toArray()
print("Confusion Matrix: \n", cm)
# Metrics with multiclassmetrics
print("MulticlassMetrics Calculations: ")
print("Precision: ", metrics.precision(label=1))
print("Recall: ", metrics.recall(label=1))
print("F1 Score: ", metrics.fMeasure())
# Manual calculations
# Accessing values in confusion matrix array
tp = cm[1][1]
tn = cm[0][0]
fp = cm[0][1]
fn = cm[1][0]
# Precision
p = float(tp) / (tp + fp)
print("Manual Calculations: ")
print("Precision: ", p)
# Recall
r = float(tp)/(tp + fn)
print("Recall: ", r)
# F1 Score
f1 = 2*((p*r) / (p + r))
print("F1 Score: ", f1)
Матрица путаницы: [[31535. 1476.] [5319. 4237.]]
Расчеты MulticlassMetrics:
Точность: 0,7416418694206196 Отзыв: 0,44338635412306404 Оценка F1: 0,8403693001620974
Ручные расчеты: *
1011Точность: 0,7416418694206196. Отзыв: 0,44338635412306404 F1: 0,5549806798087629