La gestió de dades mancants és una part crucial del preprocessament de dades en qualsevol projecte de Machine Learning. Les dades mancants poden afectar significativament la qualitat dels models i la seva capacitat de generalització. En aquesta secció, explorarem diverses tècniques per gestionar les dades mancants de manera efectiva.
Objectius
- Entendre les causes i els tipus de dades mancants.
- Aprendre diferents tècniques per gestionar les dades mancants.
- Implementar aquestes tècniques utilitzant Python.
Tipus de Dades Mancants
Les dades mancants poden classificar-se en tres categories principals:
- MCAR (Missing Completely at Random): Les dades mancants no depenen de cap variable observada ni no observada.
- MAR (Missing at Random): Les dades mancants depenen d'algunes variables observades però no de la variable que falta.
- MNAR (Missing Not at Random): Les dades mancants depenen de la variable que falta o d'altres variables no observades.
Tècniques per Gestionar Dades Mancants
- Eliminació de Dades Mancants
Eliminació de Files
Si la quantitat de dades mancants és petita, una opció és eliminar les files que contenen valors mancants.
import pandas as pd # Exemple de DataFrame amb dades mancants data = {'A': [1, 2, None, 4], 'B': [5, None, None, 8], 'C': [9, 10, 11, 12]} df = pd.DataFrame(data) # Eliminació de files amb valors mancants df_cleaned = df.dropna() print(df_cleaned)
Eliminació de Columnes
Si una columna té molts valors mancants, pot ser més eficient eliminar tota la columna.
- Imputació de Dades Mancants
Imputació amb la Mitjana, Mediana o Moda
Una tècnica comuna és imputar els valors mancants amb la mitjana, mediana o moda de la columna.
# Imputació amb la mitjana df['A'].fillna(df['A'].mean(), inplace=True) print(df) # Imputació amb la mediana df['B'].fillna(df['B'].median(), inplace=True) print(df) # Imputació amb la moda df['C'].fillna(df['C'].mode()[0], inplace=True) print(df)
Imputació amb Valors Constants
Una altra tècnica és imputar els valors mancants amb un valor constant, com ara zero o una categoria específica.
Imputació amb Models Predictius
Es poden utilitzar models predictius per imputar els valors mancants basant-se en altres variables.
from sklearn.impute import SimpleImputer import numpy as np # Exemple de DataFrame amb dades mancants data = {'A': [1, 2, np.nan, 4], 'B': [5, np.nan, np.nan, 8], 'C': [9, 10, 11, 12]} df = pd.DataFrame(data) # Imputació amb SimpleImputer imputer = SimpleImputer(strategy='mean') df_imputed = pd.DataFrame(imputer.fit_transform(df), columns=df.columns) print(df_imputed)
- Utilització d'Algoritmes que Gestionen Dades Mancants
Alguns algoritmes de Machine Learning poden gestionar dades mancants de manera nativa, com ara els arbres de decisió.
Exercicis Pràctics
Exercici 1: Eliminació de Dades Mancants
- Carrega un DataFrame amb dades mancants.
- Elimina les files amb valors mancants.
- Elimina les columnes amb valors mancants.
Exercici 2: Imputació de Dades Mancants
- Carrega un DataFrame amb dades mancants.
- Imputa els valors mancants amb la mitjana de cada columna.
- Imputa els valors mancants amb un valor constant.
Exercici 3: Imputació amb Models Predictius
- Carrega un DataFrame amb dades mancants.
- Utilitza
SimpleImputer
per imputar els valors mancants amb la mediana.
Solucions
Solució Exercici 1
# Carrega un DataFrame amb dades mancants data = {'A': [1, 2, None, 4], 'B': [5, None, None, 8], 'C': [9, 10, 11, 12]} df = pd.DataFrame(data) # Elimina les files amb valors mancants df_cleaned_rows = df.dropna() print(df_cleaned_rows) # Elimina les columnes amb valors mancants df_cleaned_cols = df.dropna(axis=1) print(df_cleaned_cols)
Solució Exercici 2
# Carrega un DataFrame amb dades mancants data = {'A': [1, 2, None, 4], 'B': [5, None, None, 8], 'C': [9, 10, 11, 12]} df = pd.DataFrame(data) # Imputa els valors mancants amb la mitjana de cada columna df['A'].fillna(df['A'].mean(), inplace=True) print(df) # Imputa els valors mancants amb un valor constant df['B'].fillna(0, inplace=True) print(df)
Solució Exercici 3
from sklearn.impute import SimpleImputer import numpy as np # Carrega un DataFrame amb dades mancants data = {'A': [1, 2, np.nan, 4], 'B': [5, np.nan, np.nan, 8], 'C': [9, 10, 11, 12]} df = pd.DataFrame(data) # Utilitza SimpleImputer per imputar els valors mancants amb la mediana imputer = SimpleImputer(strategy='median') df_imputed = pd.DataFrame(imputer.fit_transform(df), columns=df.columns) print(df_imputed)
Conclusió
La gestió de dades mancants és una part essencial del preprocessament de dades en Machine Learning. Hem explorat diverses tècniques per gestionar les dades mancants, incloent l'eliminació de dades, la imputació amb valors estadístics i l'ús de models predictius. La selecció de la tècnica adequada depèn del context del problema i de la quantitat de dades mancants.
Curs de Machine Learning
Mòdul 1: Introducció al Machine Learning
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
Mòdul 4: Algoritmes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K-Veïns més propers (K-NN)
- Xarxes neuronals
Mòdul 5: Algoritmes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
Mòdul 6: Avaluació i Validació de Models
Mòdul 7: Tècniques Avançades i Optimització
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privacitat
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a xarxes socials
- Projecte 4: Detecció de fraus