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 contexto joblib.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

fit

Realizar agrupación.

fit_predict

Realiza la agrupación en X y devuelve las etiquetas de conglomerados.

get_params

Obtiene los parámetros para este estimador.

predict

Predice el conglomerado más cercano al que pertenece cada muestra en X.

set_params

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.