Aprender los conceptos clave

1

Todo lo que aprenderás sobre MA con Scikit-Learn

2

¿Cómo aprenden las máquinas?

3

Problemas que podemos resolver con Scikit-learn

4

Las matemáticas que vamos a necesitar

Iniciar un proyecto con sklearn

5

Configuración de nuestro entorno Python

6

Instalación de librerías en Python

7

Datasets que usaremos en el curso

Optimización de features

8

¿Cómo afectan nuestros features a los modelos de Machine Learning?

9

Introducción al PCA

10

Preparación de datos para PCA e IPCA

11

Implementación del algoritmo PCA e IPCA

12

Kernels y KPCA

13

¿Qué es la regularización y cómo aplicarla?

14

Implementación de Lasso y Ridge

15

Explicación resultado de la implementación

16

ElasticNet: Una técnica intermedia

Regresiones robustas

17

El problema de los valores atípicos

18

Regresiones Robustas en Scikit-learn

19

Preparación de datos para la regresión robusta

20

Implementación regresión robusta

Métodos de ensamble aplicados a clasificación

21

¿Qué son los métodos de ensamble?

22

Preparación de datos para implementar métodos de ensamble

23

Implementación de Bagging

24

Implementación de Boosting

Clustering

25

Estrategias de Clustering

26

Implementación de Batch K-Means

27

Implementación de Mean-Shift

Optimización paramétrica

28

Validación de nuestro modelo usando Cross Validation

29

Implementación de K-Folds Cross Validation

30

Optimización paramétrica

31

Implementación de Randomized

32

Bonus: Auto Machine Learning

Salida a producción

33

Revisión de nuestra arquitectura de código

34

Importar y exportar modelos con Sklearn

35

Creación de una API con Flask para el modelo

36

Cierre del curso

37

Material adicional para consultar

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

17 Días
23 Hrs
7 Min
38 Seg

Implementación de Mean-Shift

27/37
Recursos

Aportes 16

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Quiero agregar una manera de ver graficamente estos algoritmos de clustering
Adjunto el codigo, explico
Utilize PCA para tener mi dataset en 2 dimensiones para que me sea facil graficarlo,
y con meanshift.cluster_centers_ me devuelven las coordenadas de un centroide, al final bota el grafico de los puntos y como se dividen
NOTA: como baje mi dataset a 2 dimensiones supongo que perdi mucha informacion, por eso esto es mas algo ludico para entender mejor lo que hacemos

pca = PCA(n_components=2)
pca.fit(X)
pca_data = pca.transform(X)
    
meanshift = MeanShift().fit(pca_data)
plt.scatter(pca_data[:, 0], pca_data[:, 1], c=meanshift.predict(pca_data))
plt.scatter(meanshift.cluster_centers_[:, 0], meanshift.cluster_centers_[:, 1], c='black', s=200)
plt.show()

como funciona mean-shift

Piensa que cada punto tiene un peso y todo el espacio se curva con ese peso, por lo que lugares con muchos puntos tienen se hunden mas haciendo un hueco, después lanzas un monton de bolitas en lugares aleatorios y en donde se acumulen ahi estarán los clusters.

gift que ilustra el proceso

para entender mas a fondo este video te explica como las bolitas funcionana y este articulo te explica el metodo de clustering

Si es una cantidad “moderada” de datos para implementar MeanShift, se refiere a que tamaño de la fuente? numero de Filas por número de Columnas, cantidad de registros, tamaño del archivo en Kb, Mb, Gb?

Otra pregunta es, si la restricción para usar es únicamente al tamaño de la fuente de datos ,o deben considerarse más elementos para usarlos?

Código:

import pandas as pd 

from sklearn.cluster import MeanShift 

if __name__ == "__main__":

   # Cargamos el dataset 
    dataset = pd.read_csv('./data/candy.csv') 
    #print(dataset.head(5))  

    # Vamos a eliminar la columna
    X = dataset.drop('competitorname', axis=1)

    meanshift = MeanShift().fit(X)
    # Aquí el algoritmo nos devolvio 3 clusters, porque le pareció que esa era la cantidad 
    # correcta teniendo en cuenta como se distrubuye la densidad de nuestros datos 
    print(max(meanshift.labels_))
    print("="*64)
    # Imprimamos la ubicación de los centros que puso sobre nuestros datos. Hay que recordar que estos algoritmos 
    # crean un centro y a partir de ahí se ajuztan a todos los datos que lo rodean  
    print(meanshift.cluster_centers_)
    
    # Los arreglos lo integramos a nuestros datasets 
    dataset['meanshift'] = meanshift.labels_  
    print("="*64)
    print(dataset)  
``

Si ambos modelos tienen K-3 clusters. Entonces podemos comparar sus predicciones

(df['KMeans'] == df['MeanShift']).sum() / df.shape[0]

#output = 0.5058823529411764

Y vemos que solo coinciden con el 50% de los datos

El algoritmo Mean-Shift es un algoritmo de agrupamiento que busca automáticamente el número de clústeres en un conjunto de datos y asigna los puntos de datos a los clústeres en función de la densidad de puntos. El algoritmo funciona moviendo de manera iterativa los centroides de los clústeres hacia las regiones de mayor densidad de puntos hasta que converja a los máximos locales.

Hola a todos, me ayudarían mucho si me resolvieran esta duda que surgió de esta clase. Al usar Mean-Shift o K-Means puedo tener variables dummy y continuas?. En la clase al parecer la tenemos pero vi un articulo que decía que no se podía. Gracias

Otra forma de identificar cuantos clusters creó MeanShift es usando el constructor set()

print(set(meanshift.labels_))

Para ver las etiquetas:
Se tiene que importar la librería de numpy.

np.unique(meanshift.labels_)

[0 1 2]
La clase se centró en la implementación del algoritmo Mean-Shift para clustering con scikit-learn. Se explicó cómo cargar datos, eliminar columnas no entrenables, y configurar el ancho de banda. Mean-Shift identifica automáticamente el número de clusters en los datos, lo que se demostró imprimiendo las etiquetas generadas y los centros de cada cluster. También se discutió cómo validar los resultados y compararlos con otros algoritmos. La importancia de la densidad en la distribución de los datos fue clave para entender su funcionamiento.
Me hice un scatterplot para poder ver la relación entre el precio y las preferencias de público. Dejo el código para que puedan jugar con él: ```python import pandas as pd from sklearn.cluster import MeanShift import matplotlib.pyplot as plt import seaborn as sns if __name__ == "__main__": data = pd.read_csv('./data/candy.csv') X = data.drop(['competitorname'], axis=1) meanshift = MeanShift().fit(X) data['group'] = meanshift.predict(X) plt.figure(figsize=(10,6)) scatter = sns.scatterplot(x=data['pricepercent'], y=data['winpercent'], hue=data['group'], palette="Set1", s=100) plt.title('Relationship between price percentage, public preference, and MeanShift groups') plt.xlabel('Price Percentage') plt.ylabel('Public Preference Percentage') plt.legend(title='Groups (MeanShift)', bbox_to_anchor=(1.05, 1), loc='upper left') plt.tight_layout() plt.show() ``` ![](https://static.platzi.com/media/user_upload/image-f89adde2-80db-450e-99ea-9cf0cfa3c646.jpg)
![](https://i.makeagif.com/media/4-07-2015/zOZVui.gif)
Mean Shift es un algoritmo de agrupamiento que no requiere la especificación previa del número de clústeres y puede encontrar automáticamente los centroides de los clústeres en función de la densidad de los datos. Aquí tienes una explicación más detallada: * **Funcionamiento**: * Mean Shift es un algoritmo de agrupamiento basado en la densidad que busca los modos locales de densidad de los datos. * Comienza seleccionando aleatoriamente puntos de datos como centroides iniciales (semillas). * Luego, para cada punto de semilla, calcula el centro de masa ponderado de los puntos de datos vecinos dentro de un radio especificado (bandwidth) alrededor del punto de semilla. * Desplaza el centro de masa al nuevo punto calculado y repite el proceso hasta que converja a un punto donde ya no hay cambios significativos. * Los puntos de datos que convergen a los mismos centroides se asignan al mismo clúster. * **Parámetro Bandwidth**: * El parámetro de ancho de banda (bandwidth) determina la influencia de los puntos de datos vecinos en el cálculo del centro de masa. * Un ancho de banda más pequeño significa que se considerarán menos puntos de datos en el cálculo del centro de masa, lo que puede conducir a clústeres más pequeños y detallados. * Por el contrario, un ancho de banda más grande agrupará más puntos de datos y puede producir clústeres más grandes y difusos. * **Ventajas**: * No requiere la especificación previa del número de clústeres, lo que lo hace adecuado para conjuntos de datos donde el número de clústeres no es conocido de antemano. * Puede manejar clústeres de cualquier forma y tamaño y es resistente a la inicialización aleatoria, lo que lo hace más robusto que K-Means en algunos casos. * **Desventajas**: * Puede ser computacionalmente costoso en conjuntos de datos grandes, ya que calcula la densidad para todos los puntos de datos en cada iteración. * Sensible al parámetro de ancho de banda, y la selección incorrecta del mismo puede conducir a resultados subóptimos. En resumen, Mean Shift es una técnica de agrupamiento versátil que puede encontrar automáticamente clústeres de cualquier forma y tamaño en función de la densidad de los datos. Es útil cuando no se conoce el número de clústeres de antemano y se desea una mayor flexibilidad en la forma y el tamaño de los clústeres identificados. Sin embargo, puede ser más lento en conjuntos de datos grandes y sensibles a la selección del parámetro de ancho de banda.
Aquí les dejo un artículo en caso de que quieran profundizar un poco más en el algoritmo <https://www.geeksforgeeks.org/ml-mean-shift-clustering/>

Agregué el resultado de los grupos creados en una nueva columna en el data frame original:

    meanshift_group_vector = meanshift.labels_

    dataset['meanshift_groups'] = meanshift_group_vector