Forum Discussion

prusik369's avatar
prusik369
New Member
1 year ago
Solved

Dynamic calculating balanced accuracy for multi-class

I am trying to calculate balanced accuracy as a measure but everytime   I am getting wrong results.  Solution  must take under consideration  that  number of classes is dynamic. Non dynamic way  work...
  • v-sdhruv's avatar
    1 year ago

    Hi prusik369 ,
     
    Can you try:

    Balanced Accuracy (Dynamic) :=
    VAR Classes = VALUES('visualization_dataset'[NIC_ACTUAL])

    VAR PerClassAccuracy =
    ADDCOLUMNS(
    Classes,
    "TP", CALCULATE(COUNTROWS('visualization_dataset'), 'visualization_dataset'[NIC_ACTUAL] = EARLIER('visualization_dataset'[NIC_ACTUAL]) && 'visualization_dataset'[NIC_PREDICTION] = EARLIER('visualization_dataset'[NIC_ACTUAL])),
    "FN", CALCULATE(COUNTROWS('visualization_dataset'), 'visualization_dataset'[NIC_ACTUAL] = EARLIER('visualization_dataset'[NIC_ACTUAL]) && 'visualization_dataset'[NIC_PREDICTION] <> EARLIER('visualization_dataset'[NIC_ACTUAL])),
    "FP", CALCULATE(COUNTROWS('visualization_dataset'), 'visualization_dataset'[NIC_ACTUAL] <> EARLIER('visualization_dataset'[NIC_ACTUAL]) && 'visualization_dataset'[NIC_PREDICTION] = EARLIER('visualization_dataset'[NIC_ACTUAL])),
    "TN", CALCULATE(COUNTROWS('visualization_dataset'), 'visualization_dataset'[NIC_ACTUAL] <> EARLIER('visualization_dataset'[NIC_ACTUAL]) && 'visualization_dataset'[NIC_PREDICTION] <> EARLIER('visualization_dataset'[NIC_ACTUAL]))
    )

    VAR WithScores =
    ADDCOLUMNS(
    PerClassAccuracy,
    "Sensitivity", DIVIDE([TP], [TP] + [FN]),
    "Specificity", DIVIDE([TN], [TN] + [FP]),
    "BalancedAcc", DIVIDE(DIVIDE([TP], [TP] + [FN]) + DIVIDE([TN], [TN] + [FP]), 2)
    )

    VAR FinalResult =
    AVERAGEX(WithScores, [BalancedAcc])

    RETURN
    FinalResult

    If the response has addressed your query, please accept it as a solution and give a 'Kudos' so other members can easily find it.
    Thank You