[PYTHON] Clustering avec scikit-learn + DBSCAN

Aujourd'hui, [SciPy et NumPy] suivent Hier Optimiser et booster votre programmation Python](http://it-ebooks.info/book/1280/) avec scikit-learn Je vais vous expliquer brièvement. En ce qui concerne le regroupement, Identifier les champignons comestibles et Réutiliser les résultats du regroupement ) Et [regroupement avec scikit-learn] ](Http://qiita.com/ynakayama/items/ab2d89be36d3cdaeb4f2) Je l'ai traité, donc je pense que c'est une méthode familière dans l'apprentissage automatique.

Clustering avec scikit-learn

Points de base avec plus de points de données par rapport aux [kmeans] populaires (http://ja.wikipedia.org/wiki/K%E5%B9%B3%E5%9D%87%E6%B3%95) L'algorithme DBSCAN (http://en.wikipedia.org/wiki/DBSCAN) répète le processus dans le rayon spécifié lorsque le noyau est défini. Cette technique est souvent comparée aux kmeans pour les données bruyantes.

L'œuvre originale compare et visualise également ces méthodes. Essayons-le tout de suite.

import numpy as np
import matplotlib.pyplot as mpl
from scipy.spatial import distance
from sklearn.cluster import DBSCAN

#Tout d'abord, générez des échantillons de données avec des nombres aléatoires
c1 = np.random.randn(100, 2) + 5
c2 = np.random.randn(50, 2)

#Générer et empiler une distribution uniforme
u1 = np.random.uniform(low=-10, high=10, size=100)
u2 = np.random.uniform(low=-10, high=10, size=100)
c3 = np.column_stack([u1, u2])

#Stockez toutes les données dans un tableau 150 x 2
data = np.vstack([c1, c2, c3])

#Clustering à l'aide de DBSCAN
# db.labels_Est un tableau avec des identifiants pour différents clusters dans les données
db = DBSCAN().fit(data)
labels = db.labels_

#Obtenez les coordonnées de chaque noyau
#Deux clusters sont 0 et 1, le bruit est-Classé comme 1
#Divisez ces
dbc1 = data[labels == 0] #Exemple négatif
dbc2 = data[labels == 1] #Exemple positif
noise = data[labels == -1] #bruit

La particularité est que le bruit peut être séparé de cette manière.

Visualisation

Visualisons-le avec le familier matplotlib.

x1, x2 = -12, 12
y1, y2 = -12, 12
fig = mpl.figure()
fig.subplots_adjust(hspace=0.1, wspace=0.1)
ax1 = fig.add_subplot(121, aspect='equal')
ax1.scatter(c1[:, 0], c1[:, 1], lw=0.5, color='#00CC00')
ax1.scatter(c2[:, 0], c2[:, 1], lw=0.5, color='#028E9B')
ax1.scatter(c3[:, 0], c3[:, 1], lw=0.5, color='#FF7800')
ax1.xaxis.set_visible(False)
ax1.yaxis.set_visible(False)
ax1.set_xlim(x1, x2)
ax1.set_ylim(y1, y2)
ax1.text(-11, 10, 'Original')
ax2 = fig.add_subplot(122, aspect='equal')
ax2.scatter(dbc1[:, 0], dbc1[:, 1], lw=0.5, color='#00CC00')
ax2.scatter(dbc2[:, 0], dbc2[:, 1], lw=0.5, color='#028E9B')
ax2.scatter(noise[:, 0], noise[:, 1], lw=0.5, color='#FF7800')
ax2.xaxis.set_visible(False)
ax2.yaxis.set_visible(False)
ax2.set_xlim(x1, x2)
ax2.set_ylim(y1, y2)
ax2.text(-11, 10, 'DBSCAN identified')
fig.savefig('image.png', bbox_inches='tight')

image.png

Recommended Posts

Clustering avec scikit-learn + DBSCAN
DBSCAN (clustering) avec scikit-learn
DBSCAN avec scikit-learn
Clustering avec scikit-learn (1)
Clustering avec scikit-learn (2)
Segmentation et regroupement de photos avec DBSCAN
Isomap avec Scikit-learn
Clustering avec python-louvain
PCA avec Scikit-learn
kmeans ++ avec scikit-learn
L'analyse de clustering la plus basique 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
Algorithme DBSCAN (clustering de données)
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
Traitement parallèle avec Parallel de scikit-learn
[Python] Régression linéaire avec scicit-learn
Clustering embarqué profond avec Chainer 2.0
Régression linéaire robuste avec scikit-learn
Effectuer (Visualisation> Clustering> Description des fonctionnalités) avec (t-SNE, DBSCAN, Arbre de décision)
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
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] J'ai joué avec la courbe ROC
Essayez SVM avec scikit-learn sur Jupyter Notebook
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