pySpark fMeasure and label = 1 - PullRequest
       6

pySpark fMeasure and label = 1

0 голосов
/ 18 октября 2019

Я выполнил некоторую двоичную классификацию в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...