No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

隆Se acaba el precio especial! Aprende Ingl茅s, AI, programaci贸n y m谩s.

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

1 D铆as
8 Hrs
28 Min
20 Seg

Imputaci贸n por KNN en Python

13/17
Recursos

Aportes 8

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Ordenamiento por cantidad de variables faltantes

Ordenar los datos por la cantidad de valiables faltantes nos da cierto rigor al momento de la imputacion. Esto se logra comenzando con definir las distancias entre valores existentes para luego predecir o imputar valores que no existen repitiendo el proceso paso a paso hasta lograr la imputacion completa de los datos. Algunos algoritmos implementan esta tecnica por defecto.

  • Imputacion por KNN al ordenas las variables segun su cantidad de valores faltantes de forma ascendente
# imputador con knn
knn_imputer = sklearn.impute.KNNImputer()

# copia del df                        ordenamos las variables por la cantidad de missing de forma ascendente
nhanes_df_knn = nhanes_transformed_df.missing.sort_variables_by_missingness(ascending=True).copy(deep=True)

# agregamos los valores imputados al nuevo df         ajustamos los datos ordenados por la cantidad de variables faltantes                                                                              redondeamos valores   
nhanes_df_knn.iloc[:, :] = knn_imputer.fit_transform(nhanes_transformed_df.missing.sort_variables_by_missingness(ascending=True).copy(deep=True)).round()

nhanes_df_knn
  • Visualizacion mediante un scatterplot
(   # matriz de sombra
    pd.concat(
        [
            nhanes_df_knn,
            nhanes_df.missing.create_shadow_matrix2(True, False, suffix='_imp', only_missing=True)
        ],
        axis=1
    )   # visualizacion mediantes un scatterplot de dos variables numericas
    .missing.scatter_imputation_plot(
        x = 'height',
        y = 'weight'
    )
)

Aunque ambas imputaciones son similares, puede darse el caso dependiendo del software que aplicando este truco te ayude a conseguir mejores rendimientos en el conjunto de datos

Imputacion por KNN en Python

  • Utilizamos el dataframe con los datos categoricos transformados en numeros
nhanes_transformed_df
  • Creamos el imputador con el algoritmo de knn
# imputador con knn
knn_imputer = sklearn.impute.KNNImputer()
  • Creamos una copia del dataframe con los datos transformados
nhanes_df_knn = nhanes_transformed_df.copy(deep=True)
  • Imputamos los valores faltantes
# agregamos los valores al nuevo df                  sobreescribimos        redondeamos valores   
nhanes_df_knn.iloc[:, :] = knn_imputer.fit_transform(nhanes_transformed_df).round()

nhanes_df_knn

Visualizacion de la imputacion por KNN

  • Creamos la matriz de sombra y luego graficamos mediante un scattterplot
(   # matriz de sombra
    pd.concat(
        [
            nhanes_df_knn,
            nhanes_df.missing.create_shadow_matrix2(True, False, suffix='_imp', only_missing=True)
        ],
        axis=1
    )   # visualizacion mediantes un scatterplot de dos variables numericas
    .missing.scatter_imputation_plot(
        x = 'height',
        y = 'weight'
    )
)

hasta el min 7 es el mismo video que la clase 12

Sorted or not sorted鈥?

Me parece que es lo mismo:

馃 Creo que uno de los puntos importantes a destacar de este modulo, es la distribuci贸n que siguen los valores faltantes una vez imputados respecto a la distribuci贸n de los valores completos. **Valor 煤nico** que utiliza un valor estad铆stico (media, moda o mediana) de la variable (columna) para rellenar los valores faltantes. Donde la distribuci贸n de los valores completos es mucho m谩s aplanada (valores muy dispersos respecto de la media), mientras que los valores faltantes al haber sido imputados con el valor de la media tienen una distribuci贸n/forma **leptoc煤rtica** donde los valores se concentran al rededor de la media. Es obvio al haber sido rellenados con este valor 馃槄. **Llenado hacia adelante**, utiliza el 煤ltimo valor conocido antes del valor faltante para rellenarlo. **Llenado hacia atr谩s**, utiliza el primer valor conocido despu茅s del valor faltante para rellenarlo. En ambos casos los valores imputados se dispersan de manera uniforme entre los datos completos, mientras que la distribuci贸n de los valores faltantes imputados es mucho m谩s aplanada y con los valores m谩s dispersos respecto de la media en comparaci贸n con la distribuci贸n de los valores completos. `ffill()` `bfill()` **K-vecinos m谩s cercanos**, el cu谩l imputa el valor de la media de esos vecinos m谩s pr贸ximos al valor faltante, al realizar el proceso de imputaci贸n con este algoritmo obtenemos una distribuci贸n de los valores faltantes m谩s parecida a la distribuci贸n de los valores completos. A diferencia del llenado hacia adelante y hacia atr谩s, los valores imputados son m谩s pr贸ximos entre si.
Alguien tiene el archivo con la funci贸n de scatter\_imputation\_plot()? en el que yo tengo no est谩 la funci贸n y no me funciona.

13. Imputaci贸n por KNN en Python

knn_imputer = sklearn.impute.KNNImputer()

nhanes_df_knn = nhanes_transformed_df.missing.sort_variables_by_missingness(ascending=True).copy(deep=True)

nhanes_df_knn.iloc[:, :] = knn_imputer.fit_transform(nhanes_transformed_df.missing.sort_variables_by_missingness(ascending=True)).round()
nhanes_df_knn.head(20)
(
    pd.concat(
        [
            nhanes_df_knn,
            nhanes_df.missing.create_shadow_matrix(True, False, suffix='_imp',only_missing=True)
        ],
        axis=1
    )
     .missing.scatter_imputation_plot(
         x='height',
         y='weight',
     )   
        
)