Algorithme d'apprentissage automatique III-K-means

1) Le processus de clustering k-means du jeu manuel des cartes à jouer:> 30 cartes, 3 types

Ici, nous avons sélectionné 40 cartes, sélectionné au hasard trois cartes et utilisé leurs points respectifs comme centre de classe, la première fois était 2 6 9

 

 

La base de chaque classification est que les points sont proches du centre, et ils sont classés sous la classification. Après avoir classifié pour la première fois, calculé la valeur centrale de chaque classe (moyenne de tous les nombres de cette classe), redessiné le centre de trois classes, la deuxième classe est la suivante

 

 Répétez les étapes de calcul ci-dessus jusqu'à ce que le centre de la classe ne change plus. Les résultats spécifiques sont présentés dans le tableau suivant:

 

 

2). * L'algorithme K-means est écrit de manière indépendante, le regroupement est effectué sur les données de longueur des pétales d'iris et affiché avec un nuage de points. (Points positifs)

 

import numpy as np; 
from sklearn.datasets import load_iris 
import matplotlib.pyplot as plt 

iris = load_iris () 
pl = iris.data [:, 2] 
n = len (pl) #nombre d' échantillons 
k = 3 # numéro du centre 
dist = np.zeros ([n, k + 1]) 
#Initialize a matrix center = np.zeros ([k]) 
centerNew = np.zeros ([k]) 
for i in range (k): #Évitez de commencer par Le même centre 
    pour j dans la plage (n): 
        si pl [j] dans le centre: 
            continuez 
        autrement: 
            centre [i] = pl [j] 
            casse 

tandis que (Vrai): 
    pour i dans la plage (n): 
        pour j dans la plage ( k): 
    nouveau centre 
    pour i dans la plage (k): 
            dist [i, j] = np.sqrt ((pl [i] -center [j]) ** 2) #Calculer la distance
        dist [i, k] = np.argmin (dist [i ,: k]) 

        index = dist [:, k] == i 
        centerNew [i] = np.mean (pl [index]) #si 

    deux centres avant et après Sautez 
    s'ils sont égaux, sinon continuez si np.all ((center == centerNew)): 
        break 
    else: 
        for i in range (k): 
            center [i] = centerNew [i] 

plt.scatter (pl, pl, c = dist [:, k], s = 60, cmap = 'rainbow') 
plt.show ()

  Après la sortie des résultats, ce n'était pas très satisfaisant. Suivi pour trouver des problèmes à améliorer, les résultats sont les suivants:

 

 

 

3) Utilisez sklearn.cluster.KMeans et les données de longueur des pétales d'iris pour le regroupement et l'affichage avec un nuage de points.

 

import matplotlib.pyplot as plt 
from sklearn.cluster import KMeans 
from sklearn.datasets import load_iris 

iris = load_iris () 
pl = iris.data [:, 2] 
x = pl.reshape (-1,1) 
est = KMeans (n_clusters = 3) 
est.fit (x) 

y_kmeans = est.predict (x) 
plt.scatter (x [:, 0], x [:, 0], c = y_kmeans, s = 50, cmap = 'rainbow'); 
plt.show ()

  

 

 

4) Les données complètes des fleurs d'iris sont regroupées et affichées avec un nuage de points.

irisData = iris.data 
KMeans_model = KMeans (n_clusters = 3) 
KMeans_model.fit (irisData) 
pre = KMeans_model.predict (irisData) 
plt.scatter (irisData [:, 2], irisData [:, 3], c = pre, s = 50, cmap = 'arc-en-ciel') 
plt.show ()

  

 

 

5) Pensez à ce qui est utilisé dans l'algorithme k-means?

L'algorithme k-means est un algorithme de classification non supervisé. Il utilise principalement un grand nombre de données d'entités pour distinguer les catégories. Comme dans la question ci-dessus, l'algorithme KMeans peut être utilisé pour distinguer les types d'iris. Dans la vie réelle, il peut également être utilisé pour distinguer les personnes. Les données telles que le poids et la taille peuvent être utilisées pour diviser les personnes ayant des conditions physiques différentes: grandes, courtes, grasses, minces, etc., et les œuvres courtes et longues peuvent également être classées selon la longueur des œuvres littéraires.

Je suppose que tu aimes

Origine www.cnblogs.com/xiaoAP/p/12704464.html
conseillé
Classement