Python implémente des indicateurs d'évaluation externes Accuracy [ACC] pour les données catégorielles

Il existe actuellement deux ensembles de vecteurs :

prédire l'étiquette = [1,1,2,1,1,2,2,3,3,3]

véritable étiquette = [2,2,3,2,2,3,3,1,1,1]

Si vous effectuez actuellement une analyse de cluster de données catégorielles, vous pouvez utiliser la fonction de bibliothèque ACC de Python lorsque vous rencontrez la mesure de la précision, mais le résultat qu'il obtient est ACC = 0,0.

À l'œil nu, nous pouvons également savoir que « 1 » dans l'étiquette de prédiction correspond à « 2 » dans la véritable étiquette, « 2 » correspond à « 3 » et « 3 » correspond à « 1 ».

Par conséquent, correspondant à l'évaluation de la précision des données de classification, nous devons également effectuer un meilleur travail d'appariement, et l'algorithme utilisé est l' algorithme hongrois . Le lien renvoie à mon blog précédent présentant l'algorithme hongrois, qui est très détaillé !

Je n'entrerai pas dans les détails ici, allez directement au code:

def CA(labels_true, labels_pre):
    from scipy.optimize import linear_sum_assignment
    nData = len(labels_pre)

    nC = len(np.unique(labels_true)) + 1

    E = np.zeros((nC, nC), int)
    for m in range(nData):
        i1 = labels_pre[m]
        i2 = labels_true[m]
        E[i1, i2] = E[i1, i2] + 1
    E = -E
    cost_matrix = E.T
    # 开销矩阵对应的行索引row_ind;对应行索引的最优指派列索引col_ind
    row_ind, col_ind = linear_sum_assignment(cost_matrix)
    nMatch = 0
    for i in range(nC):
        if i == 0:
            continue
        nMatch = nMatch - E[col_ind[i], i]
    accuracy = nMatch / nData
    return accuracy

Le code a été vérifié par de nombreuses expériences, vous pouvez donc l'utiliser en toute confiance ~

Paramètres entrants : étiquette réelle, résultat de la classification du cluster

Ce n'est pas facile à organiser, bienvenue sur trois liens en un clic ~

Je suppose que tu aimes

Origine blog.csdn.net/fangqi100/article/details/130368812
conseillé
Classement