[PYTHON] Clustering mit Scikit-Learn (1)

Übersicht über das Clustering

Die Implementierungsbasis finden Sie im Folgenden. K-means++ K-means Obwohl es auf Englisch ist, denke ich, dass es mehr Informationen enthält und strenger ist als die japanische Seite.

Übersicht über Scikit-Learn

Es ist eine sehr nützliche Bibliothek, mit der Sie alle Arten von maschinellem Lernen mit Python durchführen können. Bitte lesen Sie diesen Bereich.

scikit-learn Einführung von scikit-learn

Annahme

Nehmen Sie als Eingabedatei eine Textdatei an, die durch einen Zeilenumbruch für jede Zeichenfolge getrennt ist. Geben Sie dazu die Eingabe- / Ausgabedatei als Argument wie python clustering.py input.txt output.txt an. Das Ergebnis wird unterwegs mit print () angezeigt. Die Daten nach dem Clustering werden in die Ausgabedatei ausgegeben. Bitte bereiten Sie eine geeignete Textdatei vor und probieren Sie sie aus.

Implementierung

Der gesamte Code ist unten.

clustering.py

Es wird nur die Methode angegeben, mit der der Cluster erstellt wird.

clustering.py



def make_cluster(self):
    """Erstellen Sie einen Cluster und geben Sie ihn zurück
    """

    #Generieren Sie eine Liste der zu verarbeitenden Zeichenfolgen
    texts = self._read_from_file()
    print("texts are %(texts)s" %locals() )

    # TF-IDF-Vektor generieren
    vectorizer = TfidfVectorizer(
        max_df=self.max_df,
        max_features=self.max_features,
        stop_words='english'
        )
    X = vectorizer.fit_transform(texts)
    print("X values are %(X)s" %locals() )

    #Generieren und gruppieren Sie KMeans-Instanzen
    #Stellen Sie sicher, dass die Parameter entsprechend der Menge und den Eigenschaften der Daten geeignet sind.
    km = MiniBatchKMeans(
        n_clusters=self.num_clusters,
        init='k-means++', batch_size=1000,
        n_init=10, max_no_improvement=10,
        verbose=True
        )
    km.fit(X)
    labels = km.labels_

    #Berechnen Sie den Cluster, zu dem er gehört, und seine Entfernung
    transformed = km.transform(X)
    dists = np.zeros(labels.shape)
    for i in range(len(labels)):
        dists[i] = transformed[i, labels[i]]

    clusters = []
    for i in range(self.num_clusters):
        cluster = []
        ii = np.where(labels==i)[0]
        dd = dists[ii]
        di = np.vstack([dd,ii]).transpose().tolist()
        di.sort()
        for d, j in di:
            cluster.append(texts[int(j)])
        clusters.append(cluster)

    #Gibt den generierten Cluster zurück
    return clusters

Erwägung

Mit scikit-learn können Sie sehen, dass Clustering mit extrem einfachem Code durchgeführt werden kann. Überall wird eine Vielzahl von Parametern verwendet. Bei Verwendung einer tatsächlichen Anwendung ist es erforderlich, diese gemäß den Eigenschaften der Daten abzustimmen.

Recommended Posts

Clustering mit Scikit-Learn (1)
Clustering mit Scikit-Learn (2)
Clustering mit scikit-learn + DBSCAN
DBSCAN (Clustering) mit Scikit-Learn
Isomap mit Scikit-lernen
Clustering mit Python-Louvain
DBSCAN mit Scikit-Learn
PCA mit Scikit-Learn
kmeans ++ mit scikit-learn
Clustering repräsentativer Schulen im Sommer 2016 mit Scikit-Learn
Kreuzvalidierung mit Scikit-Learn
Mehrklassen-SVM mit Scikit-Learn
Scikit-Lernen mit Chemoinfomatik
Installieren Sie scikit.learn mit pip
Berechnen Sie tf-idf mit scikit-learn
Versuchen Sie es mit Scikit-Learn (1) - K-Clustering nach Durchschnittsmethode
Neuronales Netzwerk mit Python (Scikit-Learn)
Ich habe versucht, mit PyCaret zu clustern
[Python] Lineare Regression mit Scicit-Learn
Deep Embedded Clustering mit Chainer 2.0
Robuste lineare Regression mit Scikit-Learn
Rastersuche von Hyperparametern mit Scikit-learn
Erstellen eines bestimmten Baums mit Scikit-Learn
Bildsegmentierung mit Scikit-Image und Scikit-Learn
Fotosegmentierung und Clustering mit DBSCAN
Identifizieren Sie Ausreißer mit dem Random Forest Classifier von scikit-learn
Laplace-Eigenkarten mit Scikit-Learn (persönliche Notizen)
Nicht negative Matrixfaktorisierung (NMF) mit Scikit-Learn
SVM versucht maschinelles Lernen mit Scikit-Learn
Scikit-learn DecisionTreeClassifier mit Datetime-Typwerten
100 Sprachverarbeitung Knock-97 (mit Scicit-Learn): k-bedeutet Clustering
Lassen Sie uns die Hyperparameter des Modells mit scikit-learn abstimmen!
Überarbeitetes Scikit-Lernen
[Scikit-learn] Ich habe mit der ROC-Kurve gespielt
Multi-Label-Klassifizierung nach Random Forest mit Scikit-Learn
Implementieren Sie einen minimalen selbst erstellten Schätzer mit scikit-learn
Füllen Sie fehlende Werte mit Scikit-learn impute aus
Clustering von Büchern von Aozora Bunko mit Doc2Vec
Visualisieren Sie den Entscheidungsbaum von Scikit-Learn mit Plotlys Treemap
Prognostizieren Sie die zweite Runde des Sommers 2016 mit scikit-learn
Multivariables Regressionsmodell mit Scikit-Learn - Ich habe versucht, SVR zu vergleichen und zu verifizieren