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.
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
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.
Le code complet est ci-dessous.
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
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