La neteja de dades és un pas fonamental en el procés de preprocessament de dades en Machine Learning. Aquest procés implica identificar i corregir errors, omplir valors mancants, eliminar duplicats i assegurar-se que les dades siguin coherents i adequades per a l'anàlisi. Una bona neteja de dades pot millorar significativament la qualitat dels models de Machine Learning.
Objectius de la Neteja de Dades
- Eliminar errors i inconsistències: Corregir dades incorrectes o incoherents.
- Gestionar valors mancants: Decidir com tractar les dades incompletes.
- Eliminar duplicats: Assegurar que cada registre sigui únic.
- Normalitzar dades: Assegurar que les dades segueixin un format consistent.
Passos per a la Neteja de Dades
- Identificació de Dades Incorrectes o Incoherents
- Errors tipogràfics: Correcció de faltes d'ortografia o errors de digitació.
- Valors fora de rang: Identificació de valors que no tenen sentit en el context (per exemple, una edat de 150 anys).
- Incoherències: Verificar que les dades siguin coherents entre diferents camps (per exemple, una data de naixement posterior a la data de registre).
- Tractament de Valors Mancants
- Eliminació de registres: Si hi ha molts valors mancants en un registre, pot ser millor eliminar-lo.
- Imputació de valors: Substituir els valors mancants per la mitjana, mediana o mode de la columna, o utilitzar tècniques més avançades com la imputació basada en models.
- Utilització de valors per defecte: Assignar un valor per defecte quan sigui apropiat.
- Eliminació de Duplicats
- Identificació de duplicats: Utilitzar funcions per detectar registres duplicats.
- Eliminació de duplicats: Decidir quins duplicats eliminar i assegurar-se que es manté la informació rellevant.
- Normalització de Dades
- Conversió d'unitats: Assegurar que totes les dades utilitzen les mateixes unitats (per exemple, convertir totes les mesures de longitud a metres).
- Formateig de dades: Assegurar que les dades segueixen un format consistent (per exemple, dates en el mateix format).
Exemples Pràctics
Exemple 1: Identificació i Correcció d'Errors
import pandas as pd # Crear un DataFrame d'exemple data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere'], 'Edat': [25, -30, 29, 150], 'Ciutat': ['Barcelona', 'Girona', 'Lleida', 'Tarragona']} df = pd.DataFrame(data) # Identificar valors fora de rang print("Valors fora de rang:") print(df[df['Edat'] < 0]) print(df[df['Edat'] > 120]) # Corregir valors fora de rang df.loc[df['Edat'] < 0, 'Edat'] = 0 df.loc[df['Edat'] > 120, 'Edat'] = 120 print("\nDataFrame corregit:") print(df)
Exemple 2: Tractament de Valors Mancants
import pandas as pd import numpy as np # Crear un DataFrame amb valors mancants data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere'], 'Edat': [25, np.nan, 29, 35], 'Ciutat': ['Barcelona', 'Girona', np.nan, 'Tarragona']} df = pd.DataFrame(data) # Imputació de valors mancants amb la mitjana df['Edat'].fillna(df['Edat'].mean(), inplace=True) # Imputació de valors mancants amb un valor per defecte df['Ciutat'].fillna('Desconegut', inplace=True) print("DataFrame amb valors mancants imputats:") print(df)
Exemple 3: Eliminació de Duplicats
import pandas as pd # Crear un DataFrame amb duplicats data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere', 'Anna'], 'Edat': [25, 30, 29, 35, 25], 'Ciutat': ['Barcelona', 'Girona', 'Lleida', 'Tarragona', 'Barcelona']} df = pd.DataFrame(data) # Identificar duplicats print("Duplicats:") print(df[df.duplicated()]) # Eliminar duplicats df.drop_duplicates(inplace=True) print("\nDataFrame sense duplicats:") print(df)
Exercicis Pràctics
Exercici 1: Neteja de Dades Incorrectes
- Crea un DataFrame amb dades incorrectes (errors tipogràfics, valors fora de rang, etc.).
- Identifica i corregeix aquests errors.
Exercici 2: Tractament de Valors Mancants
- Crea un DataFrame amb valors mancants.
- Imputa els valors mancants utilitzant diferents tècniques (mitjana, mediana, mode, etc.).
Exercici 3: Eliminació de Duplicats
- Crea un DataFrame amb registres duplicats.
- Identifica i elimina els duplicats.
Solucions als Exercicis
Solució a l'Exercici 1
import pandas as pd # Crear un DataFrame amb dades incorrectes data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere'], 'Edat': [25, -30, 29, 150], 'Ciutat': ['Barcelona', 'Girona', 'Lleida', 'Tarragona']} df = pd.DataFrame(data) # Identificar i corregir errors df.loc[df['Edat'] < 0, 'Edat'] = 0 df.loc[df['Edat'] > 120, 'Edat'] = 120 print("DataFrame corregit:") print(df)
Solució a l'Exercici 2
import pandas as pd import numpy as np # Crear un DataFrame amb valors mancants data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere'], 'Edat': [25, np.nan, 29, 35], 'Ciutat': ['Barcelona', 'Girona', np.nan, 'Tarragona']} df = pd.DataFrame(data) # Imputació de valors mancants amb la mitjana df['Edat'].fillna(df['Edat'].mean(), inplace=True) # Imputació de valors mancants amb un valor per defecte df['Ciutat'].fillna('Desconegut', inplace=True) print("DataFrame amb valors mancants imputats:") print(df)
Solució a l'Exercici 3
import pandas as pd # Crear un DataFrame amb duplicats data = {'Nom': ['Anna', 'Joan', 'Maria', 'Pere', 'Anna'], 'Edat': [25, 30, 29, 35, 25], 'Ciutat': ['Barcelona', 'Girona', 'Lleida', 'Tarragona', 'Barcelona']} df = pd.DataFrame(data) # Identificar i eliminar duplicats df.drop_duplicates(inplace=True) print("DataFrame sense duplicats:") print(df)
Resum
En aquesta secció, hem après la importància de la neteja de dades en el procés de preprocessament de dades per a Machine Learning. Hem explorat diferents tècniques per identificar i corregir errors, gestionar valors mancants, eliminar duplicats i normalitzar dades. A més, hem vist exemples pràctics i hem proporcionat exercicis per reforçar els conceptes apresos. La neteja de dades és un pas crucial per assegurar que els models de Machine Learning es basen en dades de qualitat, la qual cosa pot millorar significativament el seu rendiment i precisió.
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