La transformació de dades és un pas crucial en el preprocessament de dades per a qualsevol projecte de Machine Learning. Aquest procés implica modificar les dades brutes per convertir-les en un format adequat per als algorismes de Machine Learning. A continuació, desglossarem els conceptes clau, tècniques i exemples pràctics per ajudar-te a comprendre i aplicar la transformació de dades de manera efectiva.
Objectius de la Transformació de Dades
- Millorar la qualitat de les dades: Eliminar errors, inconsistències i valors extrems.
- Facilitar l'anàlisi: Convertir les dades en un format que sigui fàcil d'analitzar i interpretar.
- Augmentar l'eficàcia dels models: Adaptar les dades perquè els algorismes de Machine Learning puguin aprendre de manera més eficient.
Tècniques de Transformació de Dades
- Escalatge de Dades
L'escalatge de dades és el procés d'ajustar les dades perquè estiguin en un rang específic. Això és especialment important per als algorismes que són sensibles a les magnituds de les dades, com les regressions i les xarxes neuronals.
Tipus d'Escalatge:
- Min-Max Scaling: Escala les dades perquè estiguin en un rang entre un valor mínim i màxim especificat (normalment entre 0 i 1).
- Standard Scaling: Escala les dades perquè tinguin una mitjana de 0 i una desviació estàndard de 1.
from sklearn.preprocessing import MinMaxScaler, StandardScaler import numpy as np # Exemple de Min-Max Scaling data = np.array([[1, 2], [2, 3], [3, 4]]) scaler = MinMaxScaler() scaled_data = scaler.fit_transform(data) print(scaled_data) # Exemple de Standard Scaling scaler = StandardScaler() standardized_data = scaler.fit_transform(data) print(standardized_data)
- Transformació Logarítmica
La transformació logarítmica s'utilitza per reduir la variabilitat de les dades, especialment quan hi ha valors extrems o distribucions asimètriques.
- Codificació de Variables Categòriques
Les variables categòriques han de ser transformades en un format numèric perquè els algorismes de Machine Learning puguin processar-les.
Tipus de Codificació:
- One-Hot Encoding: Crea una columna binària per a cada categoria.
- Label Encoding: Assigna un valor numèric únic a cada categoria.
import pandas as pd from sklearn.preprocessing import OneHotEncoder, LabelEncoder # Exemple de One-Hot Encoding data = pd.DataFrame({'color': ['red', 'blue', 'green']}) one_hot_encoder = OneHotEncoder() encoded_data = one_hot_encoder.fit_transform(data[['color']]).toarray() print(encoded_data) # Exemple de Label Encoding label_encoder = LabelEncoder() encoded_labels = label_encoder.fit_transform(data['color']) print(encoded_labels)
- Transformació de Variables Temporals
Les dades temporals sovint necessiten ser transformades per extreure'n informació útil, com ara l'hora del dia, el dia de la setmana, el mes, etc.
import pandas as pd data = pd.DataFrame({'date': ['2023-01-01', '2023-02-01', '2023-03-01']}) data['date'] = pd.to_datetime(data['date']) data['month'] = data['date'].dt.month data['day_of_week'] = data['date'].dt.dayofweek print(data)
Exercicis Pràctics
Exercici 1: Escalatge de Dades
Escala les següents dades utilitzant Min-Max Scaling i Standard Scaling:
Solució:
from sklearn.preprocessing import MinMaxScaler, StandardScaler import numpy as np data = np.array([[5, 20], [15, 25], [25, 30]]) # Min-Max Scaling scaler = MinMaxScaler() scaled_data = scaler.fit_transform(data) print("Min-Max Scaled Data:\n", scaled_data) # Standard Scaling scaler = StandardScaler() standardized_data = scaler.fit_transform(data) print("Standard Scaled Data:\n", standardized_data)
Exercici 2: Codificació de Variables Categòriques
Codifica la següent variable categòrica utilitzant One-Hot Encoding i Label Encoding:
Solució:
import pandas as pd from sklearn.preprocessing import OneHotEncoder, LabelEncoder data = pd.DataFrame({'fruit': ['apple', 'banana', 'cherry']}) # One-Hot Encoding one_hot_encoder = OneHotEncoder() encoded_data = one_hot_encoder.fit_transform(data[['fruit']]).toarray() print("One-Hot Encoded Data:\n", encoded_data) # Label Encoding label_encoder = LabelEncoder() encoded_labels = label_encoder.fit_transform(data['fruit']) print("Label Encoded Data:\n", encoded_labels)
Conclusió
La transformació de dades és un pas essencial en el preprocessament de dades per a projectes de Machine Learning. Hem explorat diverses tècniques, com l'escalatge de dades, la transformació logarítmica, la codificació de variables categòriques i la transformació de variables temporals. Aquests processos ajuden a millorar la qualitat de les dades i a fer que els models de Machine Learning siguin més eficients i precisos. Practica aquestes tècniques amb els exercicis proporcionats per consolidar els teus coneixements.
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