[PYTHON] Classer les données par la méthode k-means

Bonjour, c'est Motty. Cette fois, la classification (clustering) a été effectuée en Python.

Qu'est-ce que la classification?

La classification dans les statistiques et l'apprentissage automatique fait référence à la classification des données en groupes de fonctionnalités similaires. Puisqu'il est exécuté sans norme à l'avance, il s'agit d'un "apprentissage sans enseignant".

Méthode KMeans

La méthode de moyennage K est un algorithme qui classe en un nombre donné de clusters (k) en utilisant la moyenne des clusters. La structure de classification est optimisée en classant chaque donnée en fonction de sa proximité avec le centre de gravité et en mettant à jour le centre de gravité de manière séquentielle.

 2020-04-12 18.49.13.png

Implémenté en Python

KMeans.py


import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs as mb


clf = KMeans(n_clusters = 3)
N = 100 #Number of sample

dataset = mb(centers = 3)
features = np.array(dataset[0])
pred = clf.fit_predict(features)

 2020-04-12 18.51.40.png J'ai pu le classer proprement.

De plus, si les données elles-mêmes sont propres, que le nombre de K est approprié et que la sélection de l'algorithme n'est pas satisfaite, il peut y avoir des cas où elle ne peut pas être divisée proprement de cette manière.

S'il y a une valeur aberrante

NOISE = [25,25]
features = np.append(features,NOISE).reshape(-1,2)

 2020-04-12 18.56.36.png

Si le nombre de clusters n'est pas approprié

dataset = mb(centers = 4)

 2020-04-12 18.59.44.png

Cas où l'algorithme de classification ne convient pas pour K Moyens en premier lieu

makemoons.py


import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs as mb

clf = KMeans(n_clusters = 2)

X1,y1 = make_moons(noise = 0.05, random_state=0)
pred1 = clf.fit_predict(X1)

for i in range(2):
    labels = X1[pred1 == i]
    plt.scatter(labels[:,0],labels[:,1])

plt.show()

 2020-04-12 19.03.03.png

À la fin

Il existe différents algorithmes de classification, et cette fois j'ai décrit l'un d'entre eux, la méthode KMeans. Je voudrais décrire plus tard la classification de SVM et Ranram Forest.

Recommended Posts

Classer les données par la méthode k-means
Comprendre la méthode k-means
[En gros] Clustering par K Means
Fractionner les données par seuil
Données de formation par CNN
Corrélation par prétraitement des données
Clustering et analyse en composantes principales par méthode K-means (débutant)
Méthode d'extraction de données par lots à l'aide d'expressions régulières de Series
Comment visualiser les données par variable explicative et variable objective
Gzip compresser les données en streaming
Visualisation des données par préfecture
Méthode de visualisation de données utilisant matplotlib (1)
Données acquises par Django reliées
Méthode de visualisation de données utilisant matplotlib (2)
Première analyse de données satellitaires par Tellus
Méthode de visualisation de données utilisant matplotlib (+ pandas) (5)
Estimation de π par la méthode de Monte Carlo
Méthode de visualisation de données utilisant matplotlib (+ pandas) (3)
Inspection PCR efficace par méthode de pool
10 sélections d'extraction de données par pandas.DataFrame.query
Animation des géodonnées par geopandas
Optimisation SVM par la méthode de l'ensemble actif
Méthode de visualisation de données utilisant matplotlib (+ pandas) (4)
J'ai essayé de classer les nombres de mnist par apprentissage non supervisé [PCA, t-SNE, k-means]
Analyse des données par regroupement à l'aide de la méthode k-means (python) ([High school information department information II] pédagogique pour la formation des enseignants)