MCC (коэффициент корреляции Мэтьюса) в pyspark

#pyspark

#pyspark

Вопрос:

Существует ли существующая реализация для получения MCC (коэффициента корреляции Mathews) в pyspark? Легко реализовать один из матрицы путаницы, но лучше использовать повторно, если он уже реализован.

https://en.wikipedia.org/wiki/Matthews_correlation_coefficient

SKLearn API для того же: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.matthews_corrcoef.html

Ответ №1:

Вы можете собрать данные в узле name и использовать там реализацию sklearn для MCC, хотя это может быть не лучшая идея.

 y_cap = [int(i['prediction']) for i in predictions.select('prediction').collect()]
y = [int(i[condition]) for i in predictions.select(condition).collect()]
confusion = confusion_matrix(y, y_cap)
print(confusion)
tn = np.float64(confusion[0][0])
tp = np.float64(confusion[1][1])
fp = np.float64(confusion[0][1])
fn = np.float64(confusion[1][0])
mcc = (tp * tn - fp * fn) / math.sqrt((tp   fp) * (tp   fn) * (tn   fp) * (tn   fn))
print(mcc)