Spillting Dati
Divisione dei dati in training, validation e test set per i modelli di machine learning. Validazione dei dati
Preparazione del Data Set Machine learning
Divisione dei Dati
Divisione dei Dati: Training, Test e Validation SetNel machine learning, è fondamentale dividere i dati in diversi set per garantire che il modello costruito sia generalizzabile e non sovradattato ai dati di addestramento.
Training Set È utilizzato per addestrare il modello. Rappresenta solitamente il 70-80% del dataset totale.
Validation Set Viene utilizzato per sintonizzare i parametri del modello e prevenire l'overfitting. Di solito costituisce il 10-15% del dataset.
Test Set Serve per valutare le performance del modello finale. Costituisce il 10-15% del dataset.
import pandas as pd
from sklearn.model_selection import train_test_split
# Caricamento dei dati
df = pd.read_csv('data.csv')
# Separazione delle variabili indipendenti e dipendenti
X = df.drop('target', axis=1)
y = df['target']
# Divisione del dataset in training set e test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Divisione del training set in training set e validation set
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=42)
# Verifica delle dimensioni dei dataset
print("Training set:", X_train.shape, y_train.shape)
print("Validation set:", X_val.shape, y_val.shape)
print("Test set:", X_test.shape, y_test.shape)
K-Fold Cross-Validation
La k-fold cross-validation è una tecnica che suddivide il dataset in k sottoinsiemi o "fold". Il modello è addestrato k volte, ogni volta utilizzando k-1 fold come training set e il restante fold come validation set. Questo processo aiuta a garantire che ogni osservazione del dataset sia utilizzata sia per l'addestramento che per la validazione.
from sklearn.model_selection import KFold
kf = KFold(n_splits=5)
for train_index, val_index in kf.split(df):
train_set = df.iloc[train_index]
val_set = df.iloc[val_index]
# Addestrare e validare il modello qui
Misure di Validazione
Per valutare le performance del modello, si utilizzano diverse metriche a seconda del tipo di problema (classificazione o regressione):
Classificazione Accuratezza, precisione, recall, F1-score, area sotto la curva (AUC). Regressione Mean Absolute Error (MAE), Mean Squared Error (MSE), Root Mean Squared Error (RMSE), R-squared.
from sklearn.metrics import accuracy_score, mean_squared_error
# Per un modello di classificazione
accuracy = accuracy_score(y_true, y_pred)
# Per un modello di regressione
Tuning del Modello
Il tuning dei modelli implica l'ottimizzazione degli iperparametri per migliorare le performance del modello.
Alcune tecniche comuni includono la **Grid Search** e la **Random Search**.
Grid Search
Esplora una griglia predefinita di iperparametri e valuta le performance del modello per ciascuna combinazione.
from sklearn.model_selection import GridSearchCV
param_grid = {'param1': [1, 10], 'param2': [0.1, 0.01]}
grid_search = GridSearchCV(model, param_grid)
grid_search.fit(X_train, y_train)
Random Search
Esplora casualmente combinazioni di iperparametri da una distribuzione specificata.
from sklearn.model_selection import RandomizedSearchCV
param_dist = {'param1': [1, 10], 'param2': [0.1, 0.01]}
random_search = RandomizedSearchCV(model, param_distributions=param_dist, n_iter=10)
random_search.fit(X_train, y_train)