En un conjunto de datos del mundo real, siempre faltarán algunos datos. Esto se asocia principalmente con la forma en que se recopilaron los datos. Los datos faltantes juegan un papel importante en la creación de un modelo predictivo, porque hay algoritmos que no funcionan muy bien con conjuntos de datos faltantes.
Fancyimput
fancyimpute es una biblioteca para algoritmos de imputación de datos faltantes. Fancyimpute utiliza un algoritmo de aprendizaje automático para imputar valores faltantes. Fancyimpute usa toda la columna para imputar los valores faltantes. Hay dos formas en que se pueden imputar los datos faltantes usando Fancyimpute
- KNN o K-vecino más cercano
- MICE o imputación múltiple por ecuación enstringda
K-vecino más cercano
Para completar los valores que faltan, KNN encuentra los puntos de datos similares entre todas las características. Luego tomó el promedio de todos los puntos para completar los valores faltantes.
Python3
import pandas as pd import numpy as np # importing the KNN from fancyimpute library from fancyimpute import KNN df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], [np.nan, np.nan, np.nan, 5], [np.nan, 3, np.nan, 4], [5, 7, 8, 2], [2, 5, 7, 9]], columns = list('ABCD')) # printing the dataframe print(df) # calling the KNN class knn_imputer = KNN() # imputing the missing value with knn imputer df = knn_imputer.fit_transform(df) # printing dataframe print(df)
Producción:
A B C D 0 NaN 2.0 NaN 0 1 3.0 4.0 NaN 1 2 NaN NaN NaN 5 3 NaN 3.0 NaN 4 4 5.0 7.0 8.0 2 5 2.0 5.0 7.0 9 Imputing row 1/6 with 2 missing, elapsed time: 0.001 [[3.23556938 2. 7.75630267 0.] [3. 4. 7.825 1.] [3.67647071 3.46386587 7.64000033 5.] [3.35514006 3. 7.59183674 4.] [5. 7. 8. 2.] [2. 5. 7. 9.]]
Imputación múltiple por ecuación enstringda:
MICE utiliza imputación múltiple en lugar de imputación única, lo que genera incertidumbre estadística. MICE realiza una regresión múltiple sobre los datos de muestra y toma promedios de ellos
Python3
import pandas as pd import numpy as np # importing the MICE from fancyimpute library from fancyimpute import IterativeImputer df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], [np.nan, np.nan, np.nan, 5], [np.nan, 3, np.nan, 4], [5, 7, 8, 2], [2, 5, 7, 9]], columns = list('ABCD')) # printing the dataframe print(df) # calling the MICE class mice_imputer = IterativeImputer() # imputing the missing value with mice imputer df = mice_imputer.fit_transform(df) # printing dataframe print(df)
Producción
A B C D 0 NaN 2.0 NaN 0 1 3.0 4.0 NaN 1 2 NaN NaN NaN 5 3 NaN 3.0 NaN 4 4 5.0 7.0 8.0 2 5 2.0 5.0 7.0 9 [[3.27262261 2. 7.9809332 0 ] [3. 4. 7.9193547 1.] [2.91717117 4.35730239 7.47523962 5.] [2.77722048 3. 7.53760743 4.] [5. 7. 8. 2.] [2. 5. 7. 9.]]