#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)