[PYTHON] Erstellen Sie eine Funktion zur Visualisierung / Auswertung des Clustering-Ergebnisses

Visualisieren und bewerten Sie die Clusterergebnisse

Implementierung einer Funktion, die das Ergebnis der Clusterbildung mit Vae usw. visualisiert und den Bewertungswert anzeigt.

Beschriften Sie das richtige Antwortetikett und die Clusternummer, die das Clustering-Ergebnis darstellt, durch Mehrheitsentscheidung neu. Zeichnen Sie eine Pseudo-Verwirrungsmatrix und berechnen Sie die Genauigkeit. Außerdem werden die Auswertungswerte nach NMI und ARI angezeigt. Ich beabsichtige, eine Funktion zu erstellen, die bewerten kann, wie gut geclustert ist.

#Importieren Sie die erforderlichen Bibliotheken
import numpy as np
import pandas as pd
import sklearn
#Zeigen Sie die Plotergebnisse im Notizbuch an, wenn Sie das Jupyter-Notizbuch verwenden
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):
    #Neuetikettierung am nächsten an ans
    # df[ans]Richtige Antwort, df[labels]Erwarten Sie ein Cluster-Label in
    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

Erstellen Sie eine Funktion zur Visualisierung / Auswertung des Clustering-Ergebnisses
Erstellen Sie eine Funktion, um den Inhalt der Datenbank in Go abzurufen
Verschiedene Methoden zum numerischen Erstellen der Umkehrfunktion einer bestimmten Funktion Einführung
So erstellen Sie einen Wrapper, der die Signatur der zu umschließenden Funktion beibehält
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
Erstellen Sie einen Befehl, um das Arbeitsprotokoll abzurufen
Lesen Sie die Python-Markdown-Quelle: So erstellen Sie einen Parser
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Verschiedene Methoden zum numerischen Erstellen der Umkehrfunktion einer bestimmten Funktion Teil 1 Polynomregression
Erstellen Sie eine Funktion in Python
So rufen Sie eine Funktion auf
Erstellen Sie eine Funktion zum Anzeigen von Bildern wie Jupyter / RStudio [Docker]
Erstellen Sie einen Mastodon-Bot mit einer Funktion, die automatisch mit Python antwortet
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
Erstellen wir eine Funktion, um die Schaltfläche in Tkinter gedrückt zu halten
Ich möchte vorerst eine Docker-Datei erstellen.
Verwendung der Zip-Funktion
[sh] Das Speichern der Befehlsausführung führt zu Variablen
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
Schritte zum Erstellen eines Django-Projekts
Visualisieren Sie, indem Sie dem "Box-Bart-Diagramm" (Boxen / Schwarm / Violine) "einen Biss" hinzufügen.
Erstellen Sie ein Shell-Skript, um die Python-Datei mehrmals auszuführen
So erstellen Sie ein Conda-Paket
So erstellen Sie eine rekursive Funktion
So erstellen Sie eine virtuelle Brücke
[Los] Erstellen Sie einen CLI-Befehl, um die Erweiterung des Bildes zu ändern
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Ich möchte ein System erstellen, um zu verhindern, dass vergessen wird, den Schlüssel 1 festzuziehen
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
[Python3] Definition eines Dekorators, der die Ausführungszeit einer Funktion misst
Wie erstelle ich eine Docker-Datei?
5 Möglichkeiten zum Erstellen eines Python-Chatbots
So erstellen Sie eine Konfigurationsdatei
[Python] Eine einfache Funktion zum Ermitteln der Mittelkoordinaten eines Kreises
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Teilen und Verarbeiten eines Datenrahmens mithilfe der Groupby-Funktion
[Python] Erklärt anhand eines konkreten Beispiels, wie die Bereichsfunktion verwendet wird
Es wurde eine Funktion hinzugefügt, um gewünschte Verschiebungen in der Django-Verschiebungstabelle zu registrieren
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
[Entwicklungsumgebung] So erstellen Sie einen Datensatz in der Nähe der Produktionsdatenbank
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
So erstellen Sie einen Klon aus Github
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie einen Bot, um Corona-Virus-Informationen zu retweeten
So erstellen Sie einen Git-Klonordner
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Geben Sie der Registerkarte ipywidgets einen Titel
Erstellen Sie mit dem Sympy-Modul ein Diagramm
Ein einfaches IDAPython-Skript zum Benennen einer Funktion
Verschiedene Möglichkeiten, ein Wörterbuch zu erstellen (Erinnerungen)
So erstellen Sie ein Repository aus Medien
Skript zum Erstellen einer Mac-Wörterbuchdatei