Библиотека для расчёта метрик по результатам работы ML классификатора.
services.AddMLMetricsCalculators();
(IMultiClassPrecisionRecallCurvesCalculator).
Входными данными для вычисления являются результаты классификации (ClassificationResultWithConfidence):
var classificationResult = new ClassificationResultWithConfidence(actualClass: "class1", predictedClass: "class1", confidence: 0.9d);
Пример получения precision-recall curve метрик по нескольким классам (результат MultiClassPrecisionRecallCurveResult):
public class MultiClassPrecisionRecallCurveCalculatorExample
{
private readonly IMultiClassPrecisionRecallCurvesCalculator _calculator;
public MultiClassPrecisionRecallCurveCalculatorExample(IMultiClassPrecisionRecallCurvesCalculator calculator)
{
_calculator = calculator;
}
public MultiClassPrecisionRecallCurveResult Calculate()
{
var inputData = new ClassificationResultWithConfidence[]
{
new(actualClass: "class1", predictedClass: "class1", confidence: 0.99d),
new(actualClass: "class1", predictedClass: "class1", confidence: 0.98d),
new(actualClass: "class1", predictedClass: null, confidence: 0.5d),
new(actualClass: "class2", predictedClass: "class2", confidence: 0.6d),
new(actualClass: "class2", predictedClass: "class3", confidence: 0.3d),
new(actualClass: "class3", predictedClass: "class3", confidence: 0.85d),
new(actualClass: "class3", predictedClass: "class3", confidence: 0.7d)
};
var result = _calculator.Calculate(inputData);
return result;
}
}
Рассчитываются следующие метрики:
- Precision, Recall, F1Score для каждого класса
- Macro-Precision, Macro-Recall, Macro-F1Score для всех классов
- Micro-Precision, Micro-Recall, Micro-F1Score для всех классов
(IMultiClassClassificationMetricsCalculator).
Входными данными для вычисления являются результаты классификации (ClassificationResult):
var classificationResult = new ClassificationResult(actualClass: "class1", predictedClass: "class1");
Пример получения метрик (результат MultiClassClassificationMetrics):
public class MultiClassClassificationMetricsCalculatorExample
{
private readonly IMultiClassClassificationMetricsCalculator _calculator;
public MultiClassClassificationMetricsCalculatorExample(IMultiClassClassificationMetricsCalculator calculator)
{
_calculator = calculator;
}
public MultiClassClassificationMetrics Calculate()
{
var inputData = new ClassificationResult[]
{
new(actualClass: "class1", predictedClass: "class1"),
new(actualClass: "class1", predictedClass: "class1"),
new(actualClass: "class1", predictedClass: null),
new(actualClass: "class2", predictedClass: "class2"),
new(actualClass: "class2", predictedClass: "class3"),
new(actualClass: "class3", predictedClass: "class3"),
new(actualClass: "class3", predictedClass: "class3")
};
var result = _calculator.Calculate(inputData);
return result;
}
}
dotnet add package Byndyusoft.ML.Tools.Metrics