K-means algoritmo notas python3.0

La idea básica de la agrupación

Como dice el refrán, "Los iguales se atraen, las personas en los grupos"

La agrupación --Clustering-- es un aprendizaje no supervisado , en pocas palabras, es el regreso a objetos similares en el mismo grupo . Los objetos más similares dentro del clúster, el mejor agrupamiento.

Definición: Dado un conjunto de objetos de datos, las divisiones de agrupamiento de los datos en grupos, y que una reunión divididas de dos condiciones: (1) Cada grupo contiene al menos un objeto, (2), y cada objeto pertenece a solamente pertenecer a un clúster.

La idea básica: dada , el algoritmo dado por primera vez un método de partición inicial, después del cambio por el método de la división iterativa, el esquema de división en el tiempo de tal manera que cada uno tiene una mayor mejoría después de una previa

algoritmo K-Means

algoritmo K-medias es la agrupación método más clásico basado en la partición, es uno de los diez algoritmos de minería de datos clásicos. En pocas palabras, en las K-medias es ninguna señal de supervisión en el caso en que los datos se divide en K partes de un proceso.

algoritmo de agrupamiento aprendizaje no supervisado es la forma más común, dado un conjunto de datos, tenemos que cavar la agrupación algoritmos de información de los datos ocultos . La agrupación algoritmo es muy amplia: el comportamiento del cliente agrupación, la agrupación de Google Noticias.

valor de K es el número de racimos resultados en la categoría. Simplemente significa que queremos dividir el número de categorías de datos

algoritmo

Los pasos específicos del algoritmo son las siguientes:

  1. K seleccionados al azar puntos centrales
  2. Asignado a cada punto de datos desde su punto central más cercana ;
  3. puntos de cada clase recalculada a la clase desde el punto central de la media
  4. La asignación de cada dato a su punto central más cercana ;
  5. Repetir los pasos 3 y 4 hasta que todas las observaciones ya no están asignados o el número máximo de iteraciones (R & lt predeterminado a 10 veces el número de iteraciones )
  6. El código siguiente conjunto de datos generado aleatoriamente
  7. . 1  Importación numpy AS NP
     2  Importación matplotlib.pyplot AS PLT
     3.  
    4.  # Distancia entre dos puntos 
    5.  DEF Distancia (E1, E2):
     . 6      retorno np.sqrt ((E1 [0] -e2 [0]) ** 2 + (E1 [. 1] -e2 [. 1]) ** 2 )
     . 7  
    . 8  # centro colección 
    . 9  DEF medios (ARR):
     10      de retorno np.array ([np.mean ([E [0] para E en ARR]), NP. Mean ([E [1]. para E en ARR])])
     11.  
    12 es  # Arr un elemento de distancia más lejana se utiliza para inicializar el centro de la agrupación 
    13 es  DEF más lejano (k_arr, ARR):
    14      F = [0, 0]
     15      max_d = 0
     16      para E en ARR:
     . 17          D = 0
     18 es          para I en Rango (k_arr. El __len__ ()):
     . 19              D = D + np.sqrt (Distancia (k_arr [I] , E))
     20 se          IF D> max_d:
     21 es              max_d = D
     22 es              F = E
     23 es      de retorno F
     24  
    25  # Arr un elemento de distancia más cercana para el clúster 
    26 se  DEF más cercano (a, ARR):
    27      C = ARR [1. ]
     28      min_D = Distancia (A, ARR [1. ])
     29      ARR = ARR [1. :]
     30      para E en ARR:
     31 es          D = Distancia (A, E)
     32          SI D < min_D:
     33 es              min_D = D
     34 es              C = E
     35      de retorno C
     36  
    37 [  
    38 es  SI  el __name__ == " __main__ " :
     39      # # generado al azar coordenadas bidimensionales (si el conjunto de datos mejor) 
    40     = Np.random.randint ARR (100, tamaño = (100 ,. 1, 2 )) [:, 0 ,:]
     41 es  
    42 es      # # centro de la agrupación y el recipiente de inicialización clúster 
    43 es      . M 5 =
     44 es      R & lt = np.random. (. ARR la randint la __len__ . () - 1 )
     45      k_arr = np.array ([ARR [R & lt]])
     46 es      cla_arr = [[]]
     47      para I en Rango (1-m. :)
     48          K = más lejano (k_arr, ARR )
     49          k_arr = np.concatenate ([k_arr, np.array ([K])])
     50          cla_arr.append ([])
     51 es  
    52 es      # # clustering iterativo 
    53     = 20 es N
     54 se      cla_temp = cla_arr
     55      para I en Rango (n):     # iteración n veces 
    56 es          para E en ARR:     # para ajustar cada elemento en el polietileno a la clase más cercana 
    57 es              Ki = 0         # asume que el primer centro de la más cercana 
    58              min_D = Distancia (E, k_arr [Ki])
     59              para J en Rango (1, k_arr.. la __len__ ()):
     60                  SI Distancia (E, k_arr [J]) <min_D:     # encontró más cerca del centro de la agrupación 
    61                      = min_D Distancia (E, k_arr [J])
    62 es                      Ki = J
     63 es              cla_temp [Ki] .Append (E)
     64          # iterativamente actualizados centros de los conglomerados 
    65          para K en Rango (. K_arr El __len__ ()):
     66              IF n-- 1 ==. I:
     67                  PAUSA 
    68              k_arr [K] = medios (cla_temp [K])
     69              cla_temp [K] = []
     70  
    71 es      # # visual display 
    72      COL = [ ' HotPink ' , ' el Aqua ' , ' Chartreuse ' ,' Amarilla ' , ' LightSalmon ' ]
     73      para i en rango (m):
     74          plt.scatter (k_arr [i] [0], k_arr [i] [1], anchura de línea = 10, color = col [i])
     75          plt.scatter ([e [0] para e en cla_temp [i]], [e [1] para e en cla_temp [i]], color = col [i])
     76      plt.show ()
     
  8. El entrenamiento de los resultados:
  9. Detalles de K-medias
          1. valor de K dado, ¿cómo? ¿Cómo debo saber varias categorías?
            R: Esto es realmente no hay una práctica establecida en varias categorías dependiendo de la experiencia y los sentimientos personales, la práctica habitual es tratar un valor de K pocos, dividida en varias categorías verse mejor interpretación de los resultados, más en línea con el propósito de análisis y así sucesivamente . Los diversos valores de K o pueden calcularse SSE comparación, tomando el valor K mínimo de SSE.

          2. El inicial K baricentro cómo la elección?
            A: El método más común es seleccionado de forma aleatoria , la selección de centro inicial de masa de la agrupación definitiva afecta a los resultados, por lo que el algoritmo debe ejecutar varias veces, que los resultados más razonable, que utilizará los resultados. Por supuesto, hay algunos métodos de optimización, el primero es para seleccionar un punto más alejado de uno al otro, específicamente, para seleccionar el primer punto y el segundo punto se selecciona de cuando el primer punto más lejano, y seleccionar la tercera puntos, el tercer punto a la primera, la segunda y la distancia mínima entre dos puntos, y así sucesivamente. El segundo es conseguir que los resultados de la agrupación en base a otros algoritmos de agrupamiento (como agrupación jerárquica), los resultados de cada categoría a elegir un punto.

          3. K-medias no caerá en el proceso electoral ha sido el centro de masa, no se detienen?
            R: No, no hay prueba matemática de K-medias convergerán , la idea general es utilizar el concepto de la ESS (es decir, suma de cuadrados), es decir, la distancia a cada punto del centro de masa y la plaza en sí pertenece, y esto es un cuadrado función y, a continuación, ser capaz de demostrar que esta función es una función podría llegar a converger

referencia:

https://www.cnblogs.com/nxld/p/6376496.html

https://blog.csdn.net/qq_37509235/article/details/82925781

 

 

 

Supongo que te gusta

Origin www.cnblogs.com/daisy99lijing/p/12555939.html
Recomendado
Clasificación