sklearn.cluster
.MeanShift¶
- class sklearn.cluster.MeanShift¶
Agrupación por desplazamiento de la media utilizando un núcleo plano.
La agrupación media desplazada pretende descubrir «manchas» en una densidad suave de muestras. Se trata de un algoritmo basado en el centroide, que funciona actualizando los candidatos a centroides para que sean la media de los puntos de una región determinada. Estos candidatos se filtran en una etapa de post procesamiento para eliminar los casi duplicados y formar el conjunto final de centroides.
La semilla se realiza utilizando una técnica de binning para la escalabilidad.
Más información en el Manual de usuario.
- Parámetros
- bandwidthfloat, default=None
Ancho de banda utilizado en el núcleo RBF.
Si no se da, el ancho de banda se estima utilizando sklearn.cluster.estimate_bandwidth; consulta la documentación de esa función para obtener consejos sobre la escalabilidad (consulta también las Notas, más abajo).
- seedsarray-like de forma (n_samples, n_features), default=None
Las semillas utilizadas para iniciar los núcleos. Si no se establecen, las semillas se calculan mediante clustering.get_bin_seeds con el ancho de banda como tamaño de la cuadrícula y los valores predeterminados para otros parámetros.
- bin_seedingbool, default=False
Si es verdadero, las ubicaciones iniciales del kernel no son las ubicaciones de todos los puntos, sino la ubicación de la versión discretizada de los puntos, donde los puntos se dividen en una cuadrícula cuya amplitud (coarseness) corresponde al ancho de banda. Si se ajusta esta opción a True, se acelerará el algoritmo porque se iniciarán menos semillas. El valor por defecto es False. Se ignora si el argumento seeds no es None.
- min_bin_freqint, default=1
Para acelerar el algoritmo, acepta sólo aquellos intervalos con al menos puntos de min_bin_freq como semillas.
- cluster_allbool, default=True
Si es verdadero, se agrupan todos los puntos, incluso los huérfanos que no están dentro de ningún núcleo. Los huérfanos se asignan al núcleo más cercano. Si es falso, los huérfanos reciben la etiqueta de clúster -1.
- n_jobsint, default=None
El número de tareas a utilizar para el cálculo. Esto funciona calculando cada una de las ejecuciones de n_init en paralelo.
None
significa 1 a menos que esté en un contextojoblib.parallel_backend
.-1
significa que se utilizan todos los procesadores. Consulta Glosario para más detalles.- max_iterint, default=300
Número máximo de iteraciones, por punto semilla, antes de que la operación de agrupamiento termine (para ese punto semilla), si aún no ha convergido.
Nuevo en la versión 0.22.
- Atributos
- cluster_centers_ndarray de forma (n_clusters, n_features)
Coordenadas de los centros de conglomerado.
- labels_ndarray de forma (n_samples,)
Etiquetas de cada punto.
- n_iter_int
Número máximo de iteraciones realizadas en cada semilla.
Nuevo en la versión 0.22.
Notas
Scalability:
Dado que esta implementación utiliza un núcleo plano y un árbol de bolas para buscar los miembros de cada núcleo, la complejidad tenderá a O(T*n*log(n)) en dimensiones bajas, siendo n el número de muestras y T el número de puntos. En dimensiones más altas, la complejidad tenderá a O(T*n^2).
La escalabilidad puede aumentarse utilizando menos semillas, por ejemplo, usando un valor más alto de min_bin_freq en la función get_bin_seeds.
Observa que la función estimate_bandwidth es mucho menos escalable que el algoritmo mean shift y será el cuello de botella si se utiliza.
Referencias
Dorin Comaniciu y Peter Meer, «Mean Shift: A robust approach toward feature space analysis». IEEE Transactions on Pattern Analysis and Machine Intelligence.
Ejemplos
>>> from sklearn.cluster import MeanShift >>> import numpy as np >>> X = np.array([[1, 1], [2, 1], [1, 0], ... [4, 7], [3, 5], [3, 6]]) >>> clustering = MeanShift(bandwidth=2).fit(X) >>> clustering.labels_ array([1, 1, 1, 0, 0, 0]) >>> clustering.predict([[0, 0], [5, 5]]) array([1, 0]) >>> clustering MeanShift(bandwidth=2)
Métodos
Realizar agrupación.
Realiza la agrupación en
X
y devuelve las etiquetas de conglomerados.Obtiene los parámetros para este estimador.
Predice el conglomerado más cercano al que pertenece cada muestra en X.
Establece los parámetros de este estimador.
- fit()¶
Realizar agrupación.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Muestras para agrupar.
- yIgnorado
- fit_predict()¶
Realiza la agrupación en
X
y devuelve las etiquetas de conglomerados.- Parámetros
- Xarray-like de forma (n_samples, n_features)
Datos de input.
- yIgnorado
No se utiliza, está presente para la coherencia de la API por convención.
- Devuelve
- labelsndarray de forma (n_samples,), dtype=np.int64
Etiquetas de conglomerado.
- get_params()¶
Obtiene los parámetros para este estimador.
- Parámetros
- deepbool, default=True
Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.
- Devuelve
- paramsdict
Nombres de parámetros asignados a sus valores.
- predict()¶
Predice el conglomerado más cercano al que pertenece cada muestra en X.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Nuevos datos a predecir.
- Devuelve
- labelsndarray de forma (n_samples,)
Índice del conglomerado al que pertenece cada muestra.
- set_params()¶
Establece los parámetros de este estimador.
El método funciona tanto en estimadores simples como en objetos anidados (como
Pipeline
). Estos últimos tienen parámetros de la forma<component>__<parameter>
para que sea posible actualizar cada componente de un objeto anidado.- Parámetros
- **paramsdict
Parámetros del estimador.
- Devuelve
- selfinstancia del estimador
Instancia del estimador.