vastorbit.machine_learning.vast.cluster.NearestCentroid.classification_report¶
- NearestCentroid.classification_report(metrics: None | str | list[Literal['aic', 'bic', 'accuracy', 'acc', 'balanced_accuracy', 'ba', 'auc', 'roc_auc', 'prc_auc', 'best_cutoff', 'best_threshold', 'false_discovery_rate', 'fdr', 'false_omission_rate', 'for', 'false_negative_rate', 'fnr', 'false_positive_rate', 'fpr', 'recall', 'tpr', 'precision', 'ppv', 'specificity', 'tnr', 'negative_predictive_value', 'npv', 'negative_likelihood_ratio', 'lr-', 'positive_likelihood_ratio', 'lr+', 'diagnostic_odds_ratio', 'dor', 'log_loss', 'logloss', 'f1', 'f1_score', 'mcc', 'bm', 'informedness', 'mk', 'markedness', 'ts', 'csi', 'critical_success_index', 'fowlkes_mallows_index', 'fm', 'prevalence_threshold', 'pm', 'confusion_matrix', 'classification_report']] = None, cutoff: Annotated[int | float | Decimal, 'Python Numbers'] = None, labels: None | str | list[str] = None, nbins: int = 9999) float | TableSample¶
Computes a classification report using multiple model evaluation metrics (
auc,accuracy,f1…). For multiclass classification, it considers each category as positive and switches to the next one during the computation.- Parameters:
metrics (list, optional) –
List of the metrics used to compute the final report.
- accuracy:
Accuracy.
\[Accuracy = \frac{TP + TN}{TP + TN + FP + FN}\]
- aic:
Akaike’s Information Criterion
\[AIC = 2k - 2\ln(\hat{L})\]
- auc:
Area Under the Curve (ROC).
\[AUC = \int_{0}^{1} TPR(FPR) \, dFPR\]
- ba:
Balanced Accuracy.
\[BA = \frac{TPR + TNR}{2}\]
- best_cutoff:
Cutoff which optimised the ROC Curve prediction.
- bic:
Bayesian Information Criterion
\[BIC = -2\ln(\hat{L}) + k \ln(n)\]
- bm:
Informedness
\[BM = TPR + TNR - 1\]
- csi:
Critical Success Index
\[index = \frac{TP}{TP + FN + FP}\]
- f1:
F1 Score
\[F_1 Score = 2 \times \frac{Precision \times Recall}{Precision + Recall}\]
- fdr:
False Discovery Rate
\[FDR = 1 - PPV\]
- fm:
Fowlkes-Mallows index
\[FM = \sqrt{PPV * TPR}\]
- fnr:
False Negative Rate
\[FNR = \frac{FN}{FN + TP}\]
- for:
False Omission Rate
\[FOR = 1 - NPV\]
- fpr:
False Positive Rate
\[FPR = \frac{FP}{FP + TN}\]
- logloss:
Log Loss.
\[Loss = -\frac{1}{N} \sum_{i=1}^{N} \left( y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right)\]
- lr+:
Positive Likelihood Ratio.
\[LR+ = \frac{TPR}{FPR}\]
- lr-:
Negative Likelihood Ratio.
\[LR- = \frac{FNR}{TNR}\]
- dor:
Diagnostic Odds Ratio.
\[DOR = \frac{TP \times TN}{FP \times FN}\]
- mc:
Matthews Correlation Coefficient .. math:
MCC = \frac{TP \times TN - FP \times FN}{\sqrt{(TP + FP)(TP + FN)(TN + FP)(TN + FN)}}
- mk:
Markedness
\[MK = PPV + NPV - 1\]
- npv:
Negative Predictive Value
\[NPV = \frac{TN}{TN + FN}\]
- prc_auc:
Area Under the Curve (PRC)
\[AUC = \int_{0}^{1} Precision(Recall) \, dRecall\]
- precision:
Precision
\[Precision = TP / (TP + FP)\]
- pt:
Prevalence Threshold.
\[threshold = \frac{\sqrt{FPR}}{\sqrt{TPR} + \sqrt{FPR}}\]
- recall:
Recall.
\[Recall = \frac{TP}{TP + FN}\]
- specificity:
Specificity.
\[Specificity = \frac{TN}{TN + FP}\]
cutoff (PythonNumber, optional) – Cutoff for which the tested category is accepted as a prediction. For multiclass classification, each tested category becomes the positives and the others are merged into the negatives. The cutoff represents the classes threshold. If it is empty, the regular cutoff (1 / number of classes) is used.
labels (str | list, optional) – List of the different labels to be used during the computation.
nbins (int, optional) – [Used to compute ROC AUC, PRC AUC and the best cutoff] An integer value that determines the number of decision boundaries. Decision boundaries are set at equally spaced intervals between 0 and 1, inclusive. Greater values for nbins give more precise estimations of the metrics, but can potentially decrease performance. The maximum value is 999,999. If negative, the maximum value is used.
- Returns:
report.
- Return type:
Examples
For this example, we will use the Iris dataset.
import vastorbit.datasets as vod data = vod.load_iris() train, test = data.train_test_split(test_size = 0.2)
123sepallengthcmDecimal(5, 2)123sepalwidthcmDecimal(5, 2)123petallengthcmDecimal(5, 2)123petalwidthcmDecimal(5, 2)AbcspeciesVarchar(30)1 5.1 3.5 1.4 0.2 Iris-setosa 2 4.9 3.0 1.4 0.2 Iris-setosa 3 4.7 3.2 1.3 0.2 Iris-setosa 4 4.6 3.1 1.5 0.2 Iris-setosa 5 5.0 3.6 1.4 0.2 Iris-setosa 6 5.4 3.9 1.7 0.4 Iris-setosa 7 4.6 3.4 1.4 0.3 Iris-setosa 8 5.0 3.4 1.5 0.2 Iris-setosa 9 4.4 2.9 1.4 0.2 Iris-setosa 10 4.9 3.1 1.5 0.1 Iris-setosa 11 5.4 3.7 1.5 0.2 Iris-setosa 12 4.8 3.4 1.6 0.2 Iris-setosa 13 4.8 3.0 1.4 0.1 Iris-setosa 14 4.3 3.0 1.1 0.1 Iris-setosa 15 5.8 4.0 1.2 0.2 Iris-setosa 16 5.7 4.4 1.5 0.4 Iris-setosa 17 5.4 3.9 1.3 0.4 Iris-setosa 18 5.1 3.5 1.4 0.3 Iris-setosa 19 5.7 3.8 1.7 0.3 Iris-setosa 20 5.1 3.8 1.5 0.3 Iris-setosa 21 5.4 3.4 1.7 0.2 Iris-setosa 22 5.1 3.7 1.5 0.4 Iris-setosa 23 4.6 3.6 1.0 0.2 Iris-setosa 24 5.1 3.3 1.7 0.5 Iris-setosa 25 4.8 3.4 1.9 0.2 Iris-setosa 26 5.0 3.0 1.6 0.2 Iris-setosa 27 5.0 3.4 1.6 0.4 Iris-setosa 28 5.2 3.5 1.5 0.2 Iris-setosa 29 5.2 3.4 1.4 0.2 Iris-setosa 30 4.7 3.2 1.6 0.2 Iris-setosa 31 4.8 3.1 1.6 0.2 Iris-setosa 32 5.4 3.4 1.5 0.4 Iris-setosa 33 5.2 4.1 1.5 0.1 Iris-setosa 34 5.5 4.2 1.4 0.2 Iris-setosa 35 4.9 3.1 1.5 0.1 Iris-setosa 36 5.0 3.2 1.2 0.2 Iris-setosa 37 5.5 3.5 1.3 0.2 Iris-setosa 38 4.9 3.1 1.5 0.1 Iris-setosa 39 4.4 3.0 1.3 0.2 Iris-setosa 40 5.1 3.4 1.5 0.2 Iris-setosa 41 5.0 3.5 1.3 0.3 Iris-setosa 42 4.5 2.3 1.3 0.3 Iris-setosa 43 4.4 3.2 1.3 0.2 Iris-setosa 44 5.0 3.5 1.6 0.6 Iris-setosa 45 5.1 3.8 1.9 0.4 Iris-setosa 46 4.8 3.0 1.4 0.3 Iris-setosa 47 5.1 3.8 1.6 0.2 Iris-setosa 48 4.6 3.2 1.4 0.2 Iris-setosa 49 5.3 3.7 1.5 0.2 Iris-setosa 50 5.0 3.3 1.4 0.2 Iris-setosa 51 7.0 3.2 4.7 1.4 Iris-versicolor 52 6.4 3.2 4.5 1.5 Iris-versicolor 53 6.9 3.1 4.9 1.5 Iris-versicolor 54 5.5 2.3 4.0 1.3 Iris-versicolor 55 6.5 2.8 4.6 1.5 Iris-versicolor 56 5.7 2.8 4.5 1.3 Iris-versicolor 57 6.3 3.3 4.7 1.6 Iris-versicolor 58 4.9 2.4 3.3 1.0 Iris-versicolor 59 6.6 2.9 4.6 1.3 Iris-versicolor 60 5.2 2.7 3.9 1.4 Iris-versicolor 61 5.0 2.0 3.5 1.0 Iris-versicolor 62 5.9 3.0 4.2 1.5 Iris-versicolor 63 6.0 2.2 4.0 1.0 Iris-versicolor 64 6.1 2.9 4.7 1.4 Iris-versicolor 65 5.6 2.9 3.6 1.3 Iris-versicolor 66 6.7 3.1 4.4 1.4 Iris-versicolor 67 5.6 3.0 4.5 1.5 Iris-versicolor 68 5.8 2.7 4.1 1.0 Iris-versicolor 69 6.2 2.2 4.5 1.5 Iris-versicolor 70 5.6 2.5 3.9 1.1 Iris-versicolor 71 5.9 3.2 4.8 1.8 Iris-versicolor 72 6.1 2.8 4.0 1.3 Iris-versicolor 73 6.3 2.5 4.9 1.5 Iris-versicolor 74 6.1 2.8 4.7 1.2 Iris-versicolor 75 6.4 2.9 4.3 1.3 Iris-versicolor 76 6.6 3.0 4.4 1.4 Iris-versicolor 77 6.8 2.8 4.8 1.4 Iris-versicolor 78 6.7 3.0 5.0 1.7 Iris-versicolor 79 6.0 2.9 4.5 1.5 Iris-versicolor 80 5.7 2.6 3.5 1.0 Iris-versicolor 81 5.5 2.4 3.8 1.1 Iris-versicolor 82 5.5 2.4 3.7 1.0 Iris-versicolor 83 5.8 2.7 3.9 1.2 Iris-versicolor 84 6.0 2.7 5.1 1.6 Iris-versicolor 85 5.4 3.0 4.5 1.5 Iris-versicolor 86 6.0 3.4 4.5 1.6 Iris-versicolor 87 6.7 3.1 4.7 1.5 Iris-versicolor 88 6.3 2.3 4.4 1.3 Iris-versicolor 89 5.6 3.0 4.1 1.3 Iris-versicolor 90 5.5 2.5 4.0 1.3 Iris-versicolor 91 5.5 2.6 4.4 1.2 Iris-versicolor 92 6.1 3.0 4.6 1.4 Iris-versicolor 93 5.8 2.6 4.0 1.2 Iris-versicolor 94 5.0 2.3 3.3 1.0 Iris-versicolor 95 5.6 2.7 4.2 1.3 Iris-versicolor 96 5.7 3.0 4.2 1.2 Iris-versicolor 97 5.7 2.9 4.2 1.3 Iris-versicolor 98 6.2 2.9 4.3 1.3 Iris-versicolor 99 5.1 2.5 3.0 1.1 Iris-versicolor 100 5.7 2.8 4.1 1.3 Iris-versicolor Rows: 1-100 | Columns: 5Let’s import the model:
from vastorbit.machine_learning.vast import NearestCentroid
Then we can create the model:
model = NearestCentroid(p = 2)
We can now fit the model:
model.fit( train, [ "SepalLengthCm", "SepalWidthCm", "PetalLengthCm", "PetalWidthCm", ], "Species", test, )
We can get all the classification metrics using the
classification_report:model.classification_report()
Iris-setosa Iris-versicolor Iris-virginica avg_macro avg_weighted avg_micro auc 0.9411764705882353 1.0 0.9829545454545454 0.9747103386809268 0.9713569518716577 [null] prc_auc 0.27827380952380953 0.21053204458376862 0.189716748768473 0.2261742009586837 0.23138416181519628 [null] accuracy 1.0 0.9666666666666667 0.9666666666666667 0.9777777777777779 0.98 0.9777777777777777 log_loss 0.22948360027401057 0.30143175428122493 0.27906622253311153 0.269993859029449 0.26594283315390516 [null] precision 1.0 0.9 1.0 0.9666666666666667 0.9700000000000001 0.9666666666666667 recall 1.0 1.0 0.8888888888888888 0.9629629629629629 0.9666666666666667 0.9666666666666667 f1_score 1.0 0.9473684210526316 0.9411764705882353 0.9628482972136223 0.9665634674922601 0.9666666666666667 mcc 1.0 0.9258200997725514 0.9211323729436767 0.948984157572076 0.9540857418148684 0.95 informedness 1.0 0.9523809523809523 0.8888888888888888 0.947089947089947 0.9523809523809523 0.95 markedness 1.0 0.8999999999999999 0.9545454545454546 0.9515151515151515 0.9563636363636365 0.95 csi 1.0 0.9 0.8888888888888888 0.9296296296296296 0.9366666666666668 0.9354838709677419 Rows: 1-11 | Columns: 7Important
For this example, a specific model is utilized, and it may not correspond exactly to the model you are working with. To see a comprehensive example specific to your class of interest, please refer to that particular class.