Loading...

verticapy.machine_learning.vertica.ensemble.XGBClassifier.score

XGBClassifier.score(metric: 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'] = 'accuracy', average: Literal[None, 'binary', 'micro', 'macro', 'scores', 'weighted'] | None = None, pos_label: Annotated[bool | float | str | timedelta | datetime, 'Python Scalar'] | None = None, cutoff: Annotated[int | float | Decimal, 'Python Numbers'] = 0.5, nbins: int = 10000) float | list[float]

Computes the model score.

Parameters

metric: str, optional

The metric used to compute the score.

  • 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}\]
average: str, optional

The method used to compute the final score for multiclass-classification.

  • binary:

    considers one of the classes as positive and use the binary confusion matrix to compute the score.

  • micro:

    positive and negative values globally.

  • macro:

    average of the score of each class.

  • scores:

    scores for all the classes.

  • weighted:

    weighted average of the score of each class.

If empty, the result will depend on the input metric. Whenever it is possible, the exact score is computed. Otherwise, the behaviour is similar to the ‘scores’ option.

pos_label: PythonScalar, optional

Label to consider as positive. All the other classes will be merged and considered as negative for multiclass classification.

cutoff: PythonNumber, optional

Cutoff for which the tested category is accepted as a prediction.

nbins: int, optional

[Only when method is set to auc|prc_auc|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 AUC, but can potentially decrease performance. The maximum value is 999,999. If negative, the maximum value is used.

Returns

float

score.

Examples

For this example, we will use the Iris dataset.

import verticapy.datasets as vpd

data = vpd.load_iris()

train, test = data.train_test_split(test_size = 0.2)
123
SepalLengthCm
Numeric(7)
123
SepalWidthCm
Numeric(7)
123
PetalLengthCm
Numeric(7)
123
PetalWidthCm
Numeric(7)
Abc
Species
Varchar(30)
14.63.61.00.2Iris-setosa
24.73.21.30.2Iris-setosa
34.73.21.60.2Iris-setosa
44.83.01.40.1Iris-setosa
54.83.11.60.2Iris-setosa
64.83.41.90.2Iris-setosa
74.93.01.40.2Iris-setosa
84.93.11.50.1Iris-setosa
94.93.11.50.1Iris-setosa
104.93.11.50.1Iris-setosa
115.02.33.31.0Iris-versicolor
125.03.41.50.2Iris-setosa
135.13.51.40.2Iris-setosa
145.43.04.51.5Iris-versicolor
155.43.41.50.4Iris-setosa
165.43.91.30.4Iris-setosa
175.52.43.71.0Iris-versicolor
185.52.43.81.1Iris-versicolor
195.62.74.21.3Iris-versicolor
205.73.04.21.2Iris-versicolor
215.74.41.50.4Iris-setosa
225.82.85.12.4Iris-virginica
235.93.24.81.8Iris-versicolor
246.13.04.61.4Iris-versicolor
256.13.04.91.8Iris-virginica
266.32.54.91.5Iris-versicolor
276.33.34.71.6Iris-versicolor
286.33.36.02.5Iris-virginica
296.42.94.31.3Iris-versicolor
306.53.05.51.8Iris-virginica
316.53.05.82.2Iris-virginica
326.73.05.01.7Iris-versicolor
336.82.84.81.4Iris-versicolor
346.83.25.92.3Iris-virginica
357.03.24.71.4Iris-versicolor
367.13.05.92.1Iris-virginica
377.73.86.72.2Iris-virginica
384.42.91.40.2Iris-setosa
394.52.31.30.3Iris-setosa
404.83.41.60.2Iris-setosa
415.02.03.51.0Iris-versicolor
425.13.31.70.5Iris-setosa
435.13.41.50.2Iris-setosa
445.22.73.91.4Iris-versicolor
455.23.51.50.2Iris-setosa
465.24.11.50.1Iris-setosa
475.43.91.70.4Iris-setosa
485.53.51.30.2Iris-setosa
495.63.04.11.3Iris-versicolor
505.82.73.91.2Iris-versicolor
515.82.75.11.9Iris-virginica
525.82.75.11.9Iris-virginica
535.93.04.21.5Iris-versicolor
545.93.05.11.8Iris-virginica
556.02.75.11.6Iris-versicolor
566.02.94.51.5Iris-versicolor
576.12.84.71.2Iris-versicolor
586.22.84.81.8Iris-virginica
596.22.94.31.3Iris-versicolor
606.32.34.41.3Iris-versicolor
616.32.74.91.8Iris-virginica
626.43.25.32.3Iris-virginica
636.52.84.61.5Iris-versicolor
646.53.05.22.0Iris-virginica
656.53.25.12.0Iris-virginica
666.62.94.61.3Iris-versicolor
676.63.04.41.4Iris-versicolor
686.73.14.41.4Iris-versicolor
696.73.14.71.5Iris-versicolor
706.93.14.91.5Iris-versicolor
716.93.15.42.1Iris-virginica
726.93.25.72.3Iris-virginica
737.23.05.81.6Iris-virginica
747.23.26.01.8Iris-virginica
757.32.96.31.8Iris-virginica
767.72.66.92.3Iris-virginica
773.34.55.67.8Iris-setosa
783.34.55.67.8Iris-setosa
793.34.55.67.8Iris-setosa
803.34.55.67.8Iris-setosa
813.34.55.67.8Iris-setosa
823.34.55.67.8Iris-setosa
833.34.55.67.8Iris-setosa
843.34.55.67.8Iris-setosa
853.34.55.67.8Iris-setosa
863.34.55.67.8Iris-setosa
873.34.55.67.8Iris-setosa
883.34.55.67.8Iris-setosa
893.34.55.67.8Iris-setosa
903.34.55.67.8Iris-setosa
913.34.55.67.8Iris-setosa
923.34.55.67.8Iris-setosa
933.34.55.67.8Iris-setosa
943.34.55.67.8Iris-setosa
953.34.55.67.8Iris-setosa
963.34.55.67.8Iris-setosa
973.34.55.67.8Iris-setosa
983.34.55.67.8Iris-setosa
993.34.55.67.8Iris-setosa
1003.34.55.67.8Iris-setosa
Rows: 1-100 | Columns: 5

Let’s import the model:

from verticapy.machine_learning.vertica 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 the score:

model.score()
Out[109]: 0.58

To get the score of a particular class:

model.score(pos_label= "Iris-setosa")
Out[110]: 0.6

Important

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.