[PYTHON] Créer une fonction pour visualiser / évaluer le résultat du clustering

Visualisez et évaluez les résultats groupés

Implémentation d'une fonction qui visualise le résultat du clustering avec vae etc. et affiche la valeur d'évaluation.

Renommez le libellé de la bonne réponse et le numéro de cluster qui est le résultat du clustering par décision majoritaire, Dessinez une pseudo matrice de confusion et calculez la précision. Il affiche également les valeurs d'évaluation par NMI et ARI. J'ai l'intention de créer une fonction qui peut évaluer à quel point il est bien groupé.

#Importer les bibliothèques requises
import numpy as np
import pandas as pd
import sklearn
#Afficher les résultats du tracé dans le notebook lors de l'utilisation du notebook Jupyter
import matplotlib.pyplot as plt
%matplotlib inline
df_result_dense = pd.read_csv('result-dense.csv')
df_result_dense
Unnamed: 0 labels k-means
0 0 7 2
1 1 2 5
2 2 1 9
3 3 0 3
4 4 4 7
... ... ... ...
9995 9995 2 5
9996 9996 3 0
9997 9997 4 7
9998 9998 5 4
9999 9999 6 6

10000 rows × 3 columns

def relabel(ans, labels):
    df = pd.DataFrame()
    df['ans'] = ans
    df['labels'] = labels
    relabel(df, 'ans', 'labels')

def relabel(df, ans, label):
    #Renommer le plus proche de ans
    # df[ans]Bonne réponse, df[labels]S'attendre à avoir une étiquette de cluster dans
    labels = df[label].unique()
    label_dic = {}
    for i in labels:
        counts = df[df[label] == i][ans].value_counts()
        label_dic[i] = counts.index[0]
    display(label_dic)
    return list(pd.Series(df[label]).replace(label_dic))
relabel_k_means = relabel(df_result_dense, 'labels', 'k-means')
df_result_dense['relabel_k_means'] = relabel_k_means
{2: 7, 5: 2, 9: 1, 3: 0, 7: 4, 1: 9, 4: 5, 8: 8, 6: 6, 0: 3}
from sklearn.metrics import accuracy_score
print(accuracy_score(df_result_dense['labels'],df_result_dense['k-means']))
print(accuracy_score(df_result_dense['labels'],df_result_dense['relabel_k_means']))
0.1841
0.9309
ans = df_result_dense['labels']
labels = df_result_dense['k-means']
relabels = df_result_dense['relabel_k_means']
def eval_cluster(ans, labels, relabels):
    import seaborn as sns
    from sklearn.metrics import confusion_matrix

    plt.title('no-relabel')
    sns.heatmap(confusion_matrix(ans, labels), annot=True, fmt='d')
    plt.show()

    from sklearn.metrics import normalized_mutual_info_score
    print("nmi: " + str(normalized_mutual_info_score(ans, labels)))
    from sklearn.metrics.cluster import adjusted_rand_score
    print("ari: " + str(adjusted_rand_score(ans, labels)))

    plt.title('relabel')
    sns.heatmap(confusion_matrix(ans, relabels), annot=True, fmt='d')
    plt.show()
    print("acc: " + str(accuracy_score(ans, relabels)))

eval_cluster(ans, labels, relabels)

output_7_0.png

nmi: 0.8804532777228216
ari: 0.8405114317316403

output_7_2.png

acc: 0.9309

Recommended Posts

Créer une fonction pour visualiser / évaluer le résultat du clustering
Créez une fonction pour obtenir le contenu de la base de données dans Go
Diverses méthodes pour créer numériquement la fonction inverse d'une certaine fonction Introduction
Comment créer un wrapper qui préserve la signature de la fonction à envelopper
Comment créer un objet fonction à partir d'une chaîne
Créez une commande pour obtenir le journal de travail
Lire la source Python-Markdown: Comment créer un analyseur
Comment créer un sous-menu avec le plug-in [Blender]
Diverses méthodes pour créer numériquement la fonction inverse d'une certaine fonction Partie 1 Régression polynomiale
Créer une fonction en Python
Comment appeler une fonction
Créer une fonction pour afficher des images comme Jupyter / RStudio [Docker]
Créez un bot Mastodon avec une fonction pour répondre automatiquement avec Python
Probablement le moyen le plus simple de créer un pdf avec Python 3
J'ai fait une fonction pour vérifier le modèle de DCGAN
[TF] J'ai essayé de visualiser le résultat de l'apprentissage en utilisant Tensorboard
Créons une fonction pour maintenir Button dans Tkinter
Je veux créer un Dockerfile pour le moment.
Comment utiliser la fonction zip
[sh] Comment stocker les résultats de l'exécution de la commande dans des variables
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Étapes pour créer un projet Django
Visualisez en ajoutant "une morsure" au "diagramme barbe boîte" (boxen / essaim / violon)
Créez un script shell pour exécuter le fichier python plusieurs fois
Comment créer un package Conda
Comment créer une fonction récursive
Comment créer un pont virtuel
[Go] Créez une commande CLI pour changer l'extension de l'image
[Python] Faire de la fonction une fonction lambda
Je veux créer un système pour éviter d'oublier de serrer la clé 1
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Comment créer un Dockerfile (basique)
5 façons de créer un chatbot Python
Comment créer un fichier de configuration
[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
Comment diviser et traiter une trame de données à l'aide de la fonction groupby
[Python] Explique comment utiliser la fonction range avec un exemple concret
Ajout d'une fonction pour enregistrer les décalages souhaités dans la table des décalages Django
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
[Environnement de développement] Comment créer un ensemble de données proche de la base de données de production
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
J'ai créé une fonction pour voir le mouvement d'un tableau à deux dimensions (Python)
J'ai essayé de créer un linebot (implémentation)
Comment créer un clone depuis Github
Créer un décorateur de fonction Python avec Class
Créer un bot pour retweeter les informations sur le virus corona
Comment créer un dossier git clone
J'ai essayé de créer un linebot (préparation)
Donner un titre à l'onglet ipywidgets
Créer un graphique à l'aide du module Sympy
Un simple script IDAPython pour nommer une fonction
Différentes façons de créer un dictionnaire (mémoires)
Comment créer un référentiel à partir d'un média
Script pour créer un fichier de dictionnaire Mac