Gestione Dati
Analisi esplorativa, la gestione degli outliers, valori mancanti, la normalizzazione, la standardizzazione e l'encoding.
Introduzione alla Preparazione dei Dati
La preparazione dei dati è una fase cruciale nel processo di machine learning.Dati di alta qualità sono essenziali per costruire modelli accurati ed efficaci.
In questa guida, esploreremo vari passaggi e tecniche fondamentali per la preparazione dei dati, inclusi l'analisi esplorativa, la gestione degli outliers, i valori mancanti, la normalizzazione, la standardizzazione e le tecniche di encoding.
Analisi Esplorativa dei Dati
Prima di applicare qualsiasi modello di machine learning, è fondamentale comprendere i dati attraverso un'analisi esplorativa.info() fornisce un riepilogo conciso del DataFrame, inclusi il numero di entrate, il tipo di dati di ogni colonna e il numero di valori mancanti.
import pandas as pd
df = pd.read_csv('data.csv')
print(df.info())
describe() Fornisce statistiche descrittive per colonne numeriche, come la media, la deviazione standard, i valori minimo e massimo, e i quartili.
print(df.describe())
hist() Questo metodo genera istogrammi per le colonne numeriche, aiutando a visualizzare la distribuzione dei dati.
import matplotlib.pyplot as plt
df.hist(bins=50, figsize=(20,15))
plt.show()
Correlazioni tra Variabili
Le correlazioni tra variabili possono essere esplorate utilizzando la funzione `corr()`, che calcola il coefficiente di correlazione di Pearson tra le colonne del DataFrame.
correlation_matrix = df.corr()
print(correlation_matrix)
Le mappe di calore possono essere utilizzate per rappresentare visualmente queste correlazioni:
import seaborn as sns
plt.figure(figsize=(12, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.show()
Gestione degli Outliers
Gli outliers possono distorcere i risultati dei modelli di machine learning. Due metodi comuni per gestire gli outliers sono lo **Z-score** e lo **scarto interquartile (IQR)**.Z-score Misura il numero di deviazioni standard che un punto dati è distante dalla media. Gli outliers sono generalmente definiti come punti con uno Z-score superiore a 3 o inferiore a -3.
from scipy import stats
import numpy as np
z_scores = np.abs(stats.zscore(df.select_dtypes(include=[np.number])))
df = df[(z_scores < 3).all(axis=1)]
Scarto Interquartile (IQR) Il metodo IQR definisce gli outliers come valori che si trovano al di fuori di 1,5 volte l'IQR sotto il primo quartile (Q1) o sopra il terzo quartile (Q3).
Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
df = df[~((df < (Q1 - 1.5 * IQR)) |(df > (Q3 + 1.5 * IQR))).any(axis=1)]
Gestione dei Valori Mancanti
I valori mancanti possono essere trattati eliminando le righe o colonne, oppure imputando valori sostitutivi.
Eliminazione dei valori mancanti
df.dropna(inplace=True)
Imputazione dei valori mancanti
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='mean')
df.iloc[:, :] = imputer.fit_transform(df)
Normalizzazione e Standardizzazione
Normalizzazione Ridimensiona i valori delle caratteristiche in modo che siano tra 0 e 1.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df_scaled = scaler.fit_transform(df)
Standardizzazione Ridimensiona i valori delle caratteristiche in modo che abbiano una media di 0 e una deviazione standard di 1.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
Encoding delle Variabili Categoriali
One-Hot Encoding Trasforma le variabili categoriali in una serie di colonne binarie.
df_encoded = pd.get_dummies(df, columns=['categorical_column'])
Label Encoding Trasforma le categorie in valori numerici.
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
df['categorical_column'] = encoder.fit_transform(df['categorical_column'])