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

  1. 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)

  1. 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.

import numpy as np

data = np.array([1, 10, 100, 1000])
log_data = np.log(data)
print(log_data)

  1. 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)

  1. 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:

data = np.array([[5, 20], [15, 25], [25, 30]])

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:

data = pd.DataFrame({'fruit': ['apple', 'banana', 'cherry']})

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

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algoritmes de Machine Learning Supervisat

Mòdul 5: Algoritmes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2024. Tots els drets reservats