[PYTHON] Clustering avec scikit-learn (1)

Présentation du clustering

Veuillez vous référer à ce qui suit pour la base de mise en œuvre. K-means++ K-means Bien qu'il soit en anglais, je pense qu'il contient plus d'informations et est plus rigoureux que la page japonaise.

Présentation de scikit-learn

C'est une bibliothèque super utile qui vous permet de faire toutes sortes d'apprentissage automatique avec Python. Veuillez lire cette section.

scikit-learn Introduction de scikit-learn

supposition

En tant que fichier d'entrée, supposons un fichier texte séparé par un saut de ligne pour chaque chaîne de caractères. Pour l'utiliser, spécifiez le fichier d'entrée / sortie comme argument comme python clustering.py input.txt output.txt. Le résultat est affiché par print () sur le chemin. Les données après la mise en cluster sont sorties dans le fichier de sortie. Veuillez préparer un fichier texte approprié et essayez-le.

la mise en oeuvre

Le code complet est ci-dessous.

clustering.py

Seule la méthode qui crée le cluster est citée.

clustering.py



def make_cluster(self):
    """Créer et renvoyer un cluster
    """

    #Générer une liste de chaînes à traiter
    texts = self._read_from_file()
    print("texts are %(texts)s" %locals() )

    # TF-Générer un vecteur IDF
    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() )

    #Générer et mettre en cluster des instances KMeans
    #Assurez-vous que les paramètres sont appropriés en fonction de la quantité et des caractéristiques des données.
    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_

    #Calculez le cluster auquel il appartient et sa distance
    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)

    #Renvoie le cluster généré
    return clusters

Considération

En utilisant scikit-learn, vous pouvez voir que le clustering peut être effectué avec un code extrêmement simple. Une grande variété de paramètres est utilisée partout. Lors de l'utilisation d'une application réelle, il est nécessaire de les régler en fonction des caractéristiques des données.

Recommended Posts

Clustering avec scikit-learn (1)
Clustering avec scikit-learn (2)
Clustering avec scikit-learn + DBSCAN
DBSCAN (clustering) avec scikit-learn
Isomap avec Scikit-learn
Clustering avec python-louvain
DBSCAN avec scikit-learn
PCA avec Scikit-learn
kmeans ++ avec scikit-learn
Regrouper les écoles représentatives à l'été 2016 avec scikit-learn
Validation croisée avec scikit-learn
SVM multi-classes avec scikit-learn
Apprentissage Scikit-Learn avec la chimioinfomatique
Installez scikit.learn avec pip
Calculer tf-idf avec scikit-learn
Essayez d'utiliser scikit-learn (1) - Clustering K par méthode moyenne
Réseau de neurones avec Python (scikit-learn)
J'ai essayé le clustering avec PyCaret
[Python] Régression linéaire avec scicit-learn
Clustering embarqué profond avec Chainer 2.0
Régression linéaire robuste avec scikit-learn
Recherche en grille d'hyper paramètres avec Scikit-learn
Créer un arbre déterminé avec scikit-learn
Segmentation d'image avec scikit-image et scikit-learn
Segmentation et regroupement de photos avec DBSCAN
Identifiez les valeurs aberrantes avec le classificateur de forêt aléatoire de scikit-learn
Cartes propres laplaciennes avec Scikit-learn (notes personnelles)
Factorisation matricielle non négative (NMF) avec scikit-learn
SVM essayant l'apprentissage automatique avec scikit-learn
Scikit-learn DecisionTreeClassifier avec des valeurs de type datetime
100 traitement du langage knock-97 (en utilisant scicit-learn): clustering k-means
Affinons les hyper paramètres du modèle avec scikit-learn!
Scikit-learn revisité
[Scikit-learn] J'ai joué avec la courbe ROC
Classification multi-étiquettes par forêt aléatoire avec scikit-learn
Implémentez un estimateur auto-créé minimal avec scikit-learn
Remplissez les valeurs manquantes avec Scikit-learn impute
Clustering des livres d'Aozora Bunko avec Doc2Vec
Visualisez l'arbre de décision scikit-learn avec Treemap de Plotly
Prédisez le deuxième tour de l'été 2016 avec scikit-learn
Modèle de régression multivariée avec scikit-learn - J'ai essayé de comparer et de vérifier SVR