Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Normalizzazione & Standardizzazione


Due tecniche utilizzate per rendere più uniforme la distribuzione dei valori delle variabili

La normalizzazione e la standardizzazione sono due tecniche comuni utilizzate nel pre-processing dei dati per rendere più uniforme la distribuzione dei valori delle variabili.

Normalizzazione

  • Significato La normalizzazione scala i valori delle variabili in modo che si trovino entro un intervallo specifico, di solito tra 0 e 1.
  • Uso È utile quando i dati hanno una distribuzione non uniforme e si desidera che tutte le variabili abbiano la stessa scala.
  • Vantaggi Può aiutare ad evitare problemi derivanti da unità di misura diverse e a migliorare la convergenza degli algoritmi di machine learning.
  • Svantaggi Può non gestire bene gli outlier se l'intervallo dei dati è ampio.

Standardizzazione

  • Significato La standardizzazione trasforma i valori delle variabili in modo che abbiano una media zero e una deviazione standard unitaria.
  • Uso È utile quando le variabili hanno scale diverse e si desidera che abbiano la stessa media e deviazione standard.
  • Vantaggi Aiuta ad evitare problemi derivanti da unità di misura diverse, migliora la convergenza degli algoritmi e può migliorare l'interpretazione dei coefficienti nei modelli lineari.
  • Svantaggi Può amplificare l'impatto degli outlier se presenti.

Quando usarle

Ecco quando è consigliabile utilizzare la standardizzazione, la normalizzazione o entrambe.

Standardizzazione

  • Quando usarla La standardizzazione è particolarmente utile quando le variabili hanno scale diverse e si desidera che abbiano la stessa media e deviazione standard.
    È comunemente utilizzata in algoritmi che dipendono dalla distanza tra le osservazioni, come il K-Nearest Neighbors (KNN) e il Support Vector Machine (SVM).
  • Esempi Quando si utilizzano algoritmi basati sulla distanza, come il KNN.
    Quando si utilizzano algoritmi lineari, come la regressione logistica o le Support Vector Machine (SVM).

Normalizzazione

  • Quando usarla La normalizzazione è utile quando si desidera scalare i valori delle variabili in un intervallo specifico, di solito tra 0 e 1.
    È utile in algoritmi che richiedono che i valori si trovino entro un intervallo specifico, come le reti neurali.
  • Esempi Quando si utilizzano algoritmi di apprendimento automatico che richiedono valori compresi tra 0 e 1, come alcune reti neurali.

Entrambe

  • Quando usarle In alcuni casi, può essere vantaggioso applicare sia la standardizzazione che la normalizzazione.
    Ad esempio, in algoritmi sensibili alla scala e alla distribuzione dei dati, come le reti neurali, potrebbe essere utile normalizzare i dati prima di applicare la standardizzazione per garantire che i dati siano nella gamma desiderata e che abbiano una distribuzione simile.
  • Esempi Quando si utilizzano reti neurali: prima di applicare la standardizzazione, normalizzare i dati per assicurarsi che si trovino nell'intervallo desiderato e poi applicare la standardizzazione per garantire una distribuzione simile dei dati.


import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.datasets import load_iris

# Carica il dataset Iris
iris = load_iris()
data = pd.DataFrame(data=iris.data, columns=iris.feature_names)

# Normalizzazione
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
normalized_data = pd.DataFrame(data=normalized_data, columns=data.columns)

# Visualizza il grafico delle variabili normalizzate
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
for column in normalized_data.columns:
    plt.hist(normalized_data[column], alpha=0.5, label=column)
plt.title('Distribuzione variabili dopo la normalizzazione')
plt.legend()

# Standardizzazione
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
standardized_data = pd.DataFrame(data=standardized_data, columns=data.columns)

# Visualizza il grafico delle variabili standardizzate
plt.subplot(1, 2, 2)
for column in standardized_data.columns:
    plt.hist(standardized_data[column], alpha=0.5, label=column)
plt.title('Distribuzione variabili dopo la standardizzazione')
plt.legend()

plt.tight_layout()
plt.show()

In questo esempio, normalizziamo e standardizziamo il dataset Iris e mostriamo i grafici delle distribuzioni delle variabili prima e dopo l'applicazione di ciascuna tecnica.