Tutorial su Machine Learning in Python in lingua italiana per il 2022! | Come gestire i valori mancanti | Utilizzo di Scikit-Learn

Posted by


L’apprendimento automatico, o machine learning, è una branca dell’intelligenza artificiale che si occupa di sviluppare algoritmi e modelli capaci di "imparare" dai dati e di fare previsioni o classificazioni senza essere esplicitamente programmati per farlo. In questo tutorial, ti guideremo attraverso un’applicazione pratica di machine learning utilizzando Python e la libreria Scikit-Learn per gestire i valori mancanti nei dati.

  1. Introduzione a Scikit-Learn
    Scikit-Learn è una delle principali librerie open-source per il machine learning in Python. Essa fornisce un’ampia gamma di algoritmi di machine learning, strumenti per la pre-elaborazione dei dati e strumenti per la validazione dei modelli. Se non l’hai già fatto, assicurati di installare Scikit-Learn nel tuo ambiente Python utilizzando il comando pip install scikit-learn.

  2. Caricare il dataset
    Per questo tutorial, useremo un dataset di esempio contenente valori mancanti. Puoi scaricare il dataset dal seguente link: [link al dataset]. Una volta scaricato il dataset, caricalo in un dataframe Pandas utilizzando il seguente codice:
import pandas as pd

# Carica il dataset
df = pd.read_csv('path_to_dataset.csv')
  1. Identificare i valori mancanti
    Il primo passo per gestire i valori mancanti nei dati è identificarli. È possibile farlo utilizzando il metodo isnull() del dataframe Pandas, che restituisce un dataframe booleano in cui i valori mancanti sono marcati come True e i valori presenti come False:
# Identifica i valori mancanti
missing_values = df.isnull()

# Stampa il numero di valori mancanti per ogni colonna
print(missing_values.sum())
  1. Gestire i valori mancanti
    Esistono diverse tecniche per gestire i valori mancanti nei dati. Una delle tecniche più comuni è la sostituzione dei valori mancanti con il valore medio della colonna. Puoi farlo utilizzando il metodo fillna() del dataframe Pandas:
# Sostituisci i valori mancanti con il valore medio della colonna
df.fillna(df.mean(), inplace=True)
  1. Creare un modello di machine learning
    Una volta gestiti i valori mancanti nei dati, è possibile creare un modello di machine learning utilizzando Scikit-Learn. Ad esempio, per creare un modello di regressione lineare, è possibile utilizzare il seguente codice:
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# Dividi i dati in variabili indipendenti (X) e variabile dipendente (y)
X = df.drop('target_column', axis=1)
y = df['target_column']

# Dividi i dati in set di addestramento e di test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crea e allena il modello di regressione lineare
model = LinearRegression()
model.fit(X_train, y_train)

# Valuta il modello
score = model.score(X_test, y_test)
print('Score del modello: ', score)
  1. Conclusione
    In questo tutorial, ti abbiamo mostrato come gestire i valori mancanti nei dati utilizzando Python e la libreria Scikit-Learn. Con un’adeguata manipolazione dei dati e la creazione di modelli di machine learning, è possibile ottenere previsioni accurate e utili per una vasta gamma di applicazioni. Speriamo che questo tutorial ti abbia aiutato a comprendere meglio come affrontare i valori mancanti nei dati e a utilizzare il machine learning per fare previsioni intelligenti. Buon lavoro!
0 0 votes
Article Rating
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@sapiensfiero6630
1 month ago

quando faccio data["colonna"].replace(np.nan, "ciao", inplace=True) mi da questo errore-> A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.

The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.

ho risolto così-> data1=data["colonna"].replace(np.nan, "ciao", inplace=False) e poi data["colonna"]=data1.

qualcuno sa dirmi cosa c'èe di sbagliato nel primo codice?