Comment écrire une matrice de confusion en Python?

J'ai écrit une confusion matrice de calcul de code en Python:

def conf_mat(prob_arr, input_arr):
        # confusion matrix
        conf_arr = [[0, 0], [0, 0]]

        for i in range(len(prob_arr)):
                if int(input_arr[i]) == 1:
                        if float(prob_arr[i]) < 0.5:
                                conf_arr[0][1] = conf_arr[0][1] + 1
                        else:
                                conf_arr[0][0] = conf_arr[0][0] + 1
                elif int(input_arr[i]) == 2:
                        if float(prob_arr[i]) >= 0.5:
                                conf_arr[1][0] = conf_arr[1][0] +1
                        else:
                                conf_arr[1][1] = conf_arr[1][1] +1

        accuracy = float(conf_arr[0][0] + conf_arr[1][1])/(len(input_arr))

prob_arr est un tableau que mon code de classification retourné et un exemple de tableau est comme ceci:

 [1.0, 1.0, 1.0, 0.41592955657342651, 1.0, 0.0053405015805891975, 4.5321494433440449e-299, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.70943426182688163, 1.0, 1.0, 1.0, 1.0]

input_arr est à l'origine d'étiquettes de classe pour un jeu de données et c'est comme ça:

[2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1]

Ce que mon code est en train de faire est: - je obtenir prob_arr et input_arr et pour chaque classe (1 et 2) je vérifie si ils sont mal classés ou non.

Mais mon code ne fonctionne que pour les deux classes. Si j'exécute ce code pour plusieurs classé de données, il ne fonctionne pas. Comment puis-je faire cela pour de multiples classes?

Par exemple, pour un ensemble de données avec trois classes, il doit retourner: [[21,7,3],[3,38,6],[5,4,19]]

InformationsquelleAutor Arja Varvio | 2010-01-27