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

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

4D
5H
53M
18S

Implementación de Batch K-Means

26/37
Recursos

Aportes 12

Preguntas 8

Ordenar por:

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

o inicia sesión.

Les comparto una gráfica con las variables del dataset candy pareadas.

import seaborn as sns
sns.pairplot(dataset, hue='group')

Por otra parte acá también les comparto enfocadas las variables, sugarpercent, pricepercent y winpercent. Se puede observar como el algoritmo de clustering puede generar los grupos que son imposibles de notar a simple vista.

sns.pairplot(dataset[['sugarpercent','pricepercent','winpercent','group']], hue = 'group')

Hola, compañeros. Aquí les dejo una visualización de los datos coloreados por el grupo al que pertenecen. Hice un scatter con las variables que pueden ver en los ejes, por supuesto que pueden existir otras formas de visualizar cambiando los ejes de la scatter.
Saludos! 😃

Antes de implementar el algoritmo de clusterización es bueno normalizar los datos como habíamos visto en clases pasadas, ya que si se dan cuenta está tomando como referencia la columna con valores más grandes del dataframe, que en este caso es “winpercent” y clasificando por puntaje, y no es el objetivo del algoritmo.

les paso mi version del codigo:

import pandas as pd

from sklearn.cluster import MiniBatchKMeans


if __name__ == "__main__":
    
    path = './K-Means/data/candy.csv'
    dataset = pd.read_csv(path)

    print(dataset.head(5))

    x = dataset.drop('competitorname', axis=1)
    kmeans = MiniBatchKMeans(n_clusters=4, batch_size=8).fit(x)

    print('')
    print('Total de centros:', len(kmeans.cluster_centers_))

    print('')
    print('Predicciones:', kmeans.predict(x))

    dataset['Grupo'] = kmeans.predict(x)
    print(dataset)

    # Ahora mando los datos a un archivo excel :)

    writer = pd.ExcelWriter('./K-Means/data/candy_usuario.xlsx', engine='xlsxwriter')
    dataset.to_excel(writer, sheet_name='usuario')
    writer.save()

Para los que usan colab:

candy.to_excel( “candy.xlsx”,index=False)

donde candy es el nombre de mi dataset y pongo index=False para que no me aparezca 0,1,2, a mi lado izquierdo del excel y tenga una mejor presentación

Se me hace curioso el hecho de que la columna ‘winpercent’ parece ser la que hace todo el trabajo de agrupación. Si eliminamos esa columna, vemos con las gráficas que no se encuentra ningún patrón claro en el dataset.

Ojo lo que esta haciendo de reemplazar la columna group por los valores predichos por el modelo lo esta haciendo porque K-means es un modelo de aprendizaje no supervisado, el modelo es el que se encarga de hacer la clasificacion.

imprimir cluster en grafica 2D usando PCA

dataset = pd.read_csv('./datasets/candy.csv')

# eliminaremos los nombres de los caramelos ya que es categorica
X = dataset.drop('competitorname', axis=1)
X.head(3)
 
kmeans = MiniBatchKMeans(n_clusters=4,  #definiremos 4 grupos 
                            batch_size=8).fit(X) # la cantidad de datos por lote para aligerar el computo 

print('Total de centros: ', len(kmeans.cluster_centers_))
print('*'*64)

# guardamos la etiqueta de cada grupo en el DS
print(kmeans.predict(X))
print('*'*64)
X['cluster'] = kmeans.predict(X)

print(X.head(3))

aqui importamos el modulo de PCA es facil de usar

from sklearn.decomposition import PCA

model_PCA = PCA(n_components=2) # instanciamos el modelo 
data_PCA = model_PCA.fit_transform(X) # realizamos tranformacion
df_PCA = pd.DataFrame(data= data_PCA, columns= ["PCA1","PCA2"])
df_PCA = pd.concat([df_PCA, X['cluster']], axis=1)

x = sns.scatterplot(x = "PCA1", y = "PCA2", 
hue = "cluster", data = df_PCA, palette = ["red", "green", "blue", "black"])
plt.show()

from matplotlib import pyplot as plt
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
import seaborn as sns
from xlsxwriter import Workbook

from sklearn.cluster import MiniBatchKMeans
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA


if __name__ == "__main__":

    dataset = pd.read_csv('./data/candy.csv')

    X_cols = list(set(dataset.columns)-set(['competitorname']))
    X = dataset[X_cols].values
    sc_x = StandardScaler()

    #standarizacion de los datos
    X_std = sc_x.fit_transform(X)

    kmeans = MiniBatchKMeans(n_clusters=4, batch_size=8).fit(X_std)
    print(f'Total de centros: {len(kmeans.cluster_centers_)}')
    print("="*64)
    print(f'Predicciones: {kmeans.predict(X_std)}')

    dataset['group'] = kmeans.predict(X_std)

    print(dataset['group'].value_counts())

    # Ahora mando los datos a un archivo excel :)
    # with pd.ExcelWriter('data/candy_usuario.xlsx', engine="xlsxwriter") as writer:
    #     dataset.to_excel(writer, sheet_name='usuario')

    # dataset.to_excel(r'data/candy_usuario.xlsx', sheet_name='usuario', index = False)
    #implementacion_k_means

    # sns.scatterplot(data=dataset, x="sugarpercent", y="winpercent", hue="group", palette="deep")
    #
    # sns.pairplot(dataset[['sugarpercent', 'pricepercent', 'winpercent', 'group']], hue='group')



    '''Realizado por mi para ver las graficas y los centroides de manera visual'''
    def pca_fun(n_components, data):
        pca = PCA(n_components=n_components).fit(data)
        data = pca.transform(data)
        return data

    pca_data = pca_fun(2,X_std)

    kmeans = MiniBatchKMeans(n_clusters=4, batch_size=8).fit(pca_data)

    fig = px.scatter(
        x=pca_data[:, 0],
        y=pca_data[:, 1],
        color=kmeans.predict(pca_data))
    # Aqui anexamos a la misma figura cada trazo

    fig.add_trace(go.Scatter(
        x=kmeans.cluster_centers_[:, 0],
        y=kmeans.cluster_centers_[:, 1],
        mode='markers', marker=dict(size=20,
        color= 'white'), name='Centroides'
    ))

    fig.update_layout(title=f'Visualizacion de centroides sobre PCA de 2 componentes, se escalo data antes de PCA', coloraxis_showscale=False)
    fig.show()



    ##################### PCA 3 componentes
    pca_data = pca_fun(3,X_std)

    kmeans = MiniBatchKMeans(n_clusters=4, batch_size=8).fit(pca_data)

    fig = px.scatter_3d(
        x=pca_data[:, 0],
        y=pca_data[:, 1],
        z=pca_data[:, 2],
        color=kmeans.predict(pca_data))
    # Aqui anexamos a la misma figura cada trazo

    fig.add_trace(go.Scatter3d(
        x=kmeans.cluster_centers_[:, 0],
        y=kmeans.cluster_centers_[:, 1],
        z=kmeans.cluster_centers_[:, 2],
        mode='markers', marker=dict(size=20,
        color= 'white'), name='Centroides'
    ))

    fig.update_layout(title=f'Visualizacion de centroides sobre PCA de 3 componentes, se escalo data antes de PCA', coloraxis_showscale=False)
    fig.show()

    '''No funciona somoclu al parecer por el python usado. 3.10. (no pienso bajar mi version de python ya que quiero aprender a usar match case) https://github.com/peterwittek/somoclu/issues/144,
    link de fuente para implementacion de esta libreria:
    https://www.kaggle.com/code/phyothuhtet/document-clustering-self-organizing-map-kmeans'''

    # import somoclu
    #
    # def som(data):
    #     som = somoclu.Somoclu(50, 50, data=data, maptype="toroid")
    #     %time som = som.train(data)
    #     print("Comonent Planes")
    #     return som
    #
    # som = som(pca_data)
    #
    # #Exploring Component Planes
    # #labels is 0 to n(document-0, document-1,...documentn)
    # labels = range(0,pca_data.shape[0])
    #
    # # Step4: Exploring Content Planes
    # som.view_component_planes()
    #
    # # Step 5: Exploring clusters by SOM reinforced with  Doc2Vec
    # som.view_umatrix(bestmatches = True)


Excelente clase

yo para exporta el dataset a excel primeto tuve que instalar openpyxl en Anaconda y de hay fue facil :
dataset.to_excel(r’data/candy_usuario.xlsx’,sheet_name=‘usuario’, index = False)