2020.4.14 Algoritmo K-means

1) El proceso de agrupación k-means de juego manual de naipes:> 30 cartas, 3 tipos

2). * El algoritmo K-means se escribe independientemente, la agrupación se realiza en los datos de longitud del pétalo del iris y se muestra con un diagrama de dispersión. (Puntos más)

3). Utilice sklearn.cluster.KMeans y datos de longitud de pétalo de iris para la agrupación y visualización con diagrama de dispersión.

4). Los datos completos de las flores de iris se agrupan y se muestran con un diagrama de dispersión.

5) ¿Piensa en lo que se usa en el algoritmo k-means?

Respuesta:

1) El proceso de agrupación k-means de ensayo manual para jugar a las cartas:> 30 cartas, 3 tipos

Seleccione aleatoriamente tres centros (8, 3, 2);

 

Después del primer paso, se convierte en (9, 4, 2);

 

Después del segundo paso, se convierte en (10, 6, 2), que no ha cambiado, y el centro del grupo es (10, 6, 2);

 

2) Escriba el algoritmo K-means de forma independiente, use los datos de la longitud del pétalo del iris para la agrupación y muéstrelo con un diagrama de dispersión.

 

# - * - coding:. UTF-8 - * - 

de sklearn.datasets importación load_iris
 importación PANDAS como Pd
 importación numpy, como NP
 importación matplotlib.pyplot AS PLT 

# espacio Seleccionar datos K objetos como los centros iniciales, cada objeto representa una centro de la agrupación; 
DEF initcenter (Data, K): 
    m [. 1] = data.shape   # número de muestras de una propiedad 
    Center = [] 
    TEMP = 0 
    temptemp = 0
     para I en Rango (K): 
        TEMP = np.random. randint (0, len (datos))
         si temp! =temptemp: 
            center.append (data [temp 
            ,: ]) temptemp = temp
         else :
             print ( " 重复 啦" ) 
            i - = 1 
    center = np.array (centro)
     devuelve centro 

def más cercano (centro, x): 
    distancia = [ ]
     para j en el rango (k): 
        distance.append (sum ((x - center [j ,:]) ** 2 ))
     # print (np.argmin (distance)) 
    y = np.argmin (distance)
     returny 

def xclassify (datos, y, centro):
     para índice, x en enumerar (datos): 
        y [índice] = más cercano (centro, x)
     devuelve y 

def kcmean (datos, y, centro, k): 
    m = datos. forma [1 ] 
    center_new = np.zeros ([k, m])
     para i en el rango (k): 
        index = y == i 
        center_new [i ,: ] = np.mean (data [index,:], axis = 0)
     if np.all (center_new == center):
         centro de retorno , Falso
     más: 
        Centro = center_new
         retorno centro, True 

# inicialización; invoca el Centro generan 
SI  el __name__ == ' __main__ ' : 
    datos = . Load_iris () Datos 
    Centro = initcenter (datos ,. 3 ) 
    K = int (ENTRADA ( " Por favor, introduzca el número del centro de gravedad: " )) 
    y = np.zeros (len (datos)) 
    flag = Verdadero
     mientras flag: 
          y = xclassify (data, y, center) 
          center, flag =kcmean (datos, y, centro, k)
     imprimir ( " 聚类 结果 :" , y) 

    para x en rango (len (datos)): 
        plt.scatter (datos [x] [0], datos [x] [ 1 ], s = 30, c = ' b ' , marcador = ' . ' )
     para k en rango (len (centro)): 
        plt.scatter (centro [k] [0], centro [k] [ 1], s = 60, c = ' r ' , marcador = ' D ' ) 
    plt.show ()

Resultado de la operación:

 Resultados de visualización:

 

3) Utilice sklearn.cluster.KMeans y datos de longitud de pétalo de iris para la agrupación y visualización con diagrama de dispersión.

 

# - * - codificación: utf-8 - * - 

desde sklearn.datasets import load_iris
 desde sklearn.cluster import KMeans
 import matplotlib.pyplot como plt 
data_iris = load_iris (). data 

speal_width = data_iris [:, 2 ] 
X = speal_width.reshape (-1,1 ) 
X.shape 
kmeans_model = KMeans (n_clusters = 3 ) 
kmeans_model.fit (X) 
kmeans_model.predict ([[ 3.5 ]]) 
y_predict = kmeans_model.predict (X) 
kmeans_model.cluster_centers_ 
kmeans_model.labels_ 
plt.scatter (X [ :, 0], X [:, 0], c= y_predict, s = 50, cmap = " arcoiris " ) 
plt.show ()

 Resultados de visualización:

 

4) Los datos completos de las flores de iris se agrupan y se muestran con un diagrama de dispersión.

# - * - codificación: utf-8 - * - 

desde sklearn.datasets import load_iris
 desde sklearn.cluster import KMeans
 import matplotlib.pyplot como plt 
data_iris = load_iris (). data 

kmeans_model = KMeans (n_clusters = 3 ) 
kmeans_model.fit (data_iris ) 
y_predict1 = kmeans_model.predict (data_iris) 
kmeans_model.cluster_centers_ 
kmeans_model.labels_ 
plt.scatter (data_iris [:, 2], data_iris [:, 3], c = y_predict1, s = 50, cmap = " rainbow " ) 
plt.ow ()

 Resultados de visualización:

 

5) ¿Piensa en lo que se usa en el algoritmo k-means?

1. Clasificador de documentos

  Divida los documentos en varias categorías según las etiquetas, los temas y el contenido del documento. Este es un problema de clasificación de algoritmo K-means muy estándar y clásico. En primer lugar, es necesario inicializar los documentos, expresar cada documento como un vector y usar la frecuencia de término para identificar términos comunes para la clasificación de documentos. Este paso es necesario. Luego, los vectores de documentos se agrupan para identificar la similitud en el grupo de documentos.

  2. Clasificación del cliente

  La agrupación en clúster puede ayudar a los especialistas en marketing a mejorar su base de clientes (trabajando en su área objetivo) y subdividir aún más las categorías de clientes en función del historial de compras del cliente, el interés o el monitoreo de la actividad.

  3. Análisis del estado del equipo.

  Analizar el estado de los jugadores siempre ha sido un elemento clave en el mundo del deporte. A medida que la competencia se vuelve más intensa, el aprendizaje automático también juega un papel vital en este campo. Si desea crear un equipo excelente y le gusta identificar jugadores similares en función del estado del jugador, entonces el algoritmo K-means es una buena opción.

  4. Análisis de datos de viaje

  El conjunto de datos de la información de viaje de Uber abierta al público nos brinda una gran cantidad de datos valiosos sobre el tráfico, el tiempo de tránsito y la ubicación máxima del viaje. El análisis de estos datos no solo es bueno para Uber, sino que también nos ayuda a tener una comprensión profunda de los patrones de tráfico de la ciudad para ayudarnos a hacer planes para la ciudad en el futuro.

  5. Análisis cibernéticos criminales

  El análisis de red es el proceso de recopilación de datos de individuos y grupos para identificar relaciones importantes entre los dos. El análisis de la red se origina en el archivo del crimen, que proporciona información del departamento de investigación para clasificar a los delincuentes en la escena del crimen.

   6. Análisis detallado de los registros de llamadas.

  Call Detail Record (CDR) es la recopilación de información sobre llamadas de usuarios, mensajes de texto y actividades de red por parte de compañías de telecomunicaciones. La combinación de registros detallados de llamadas con datos personales de los clientes puede ayudar a las compañías de telecomunicaciones a hacer más predicciones sobre las necesidades de los clientes.

 

Supongo que te gusta

Origin www.cnblogs.com/Azan1999/p/12695951.html
Recomendado
Clasificación