Contenuti del Corso
Regressione Lineare con Python
Regressione Lineare con Python
Costruzione della Regressione Lineare con NumPy
Sai già cos'è la regressione lineare semplice e come trovare la retta che meglio si adatta ai dati. Ora seguirai tutti i passaggi per costruire una regressione lineare su un dataset reale.
Caricamento dei dati
Abbiamo un file, simple_height_data.csv
, con i dati dei nostri esempi. Caricheremo il file e lo esamineremo:
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file print(df.head()) # Print the first 5 instances from a dataset
Quindi il dataset ha due colonne: la prima è 'Father'
, che rappresenta la caratteristica di input, e la seconda è 'Height'
, che è la nostra variabile target.
Assegneremo i valori target alla variabile y
e i valori della caratteristica a X
e costruiremo uno scatterplot.
import pandas as pd import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Ricerca dei parametri
NumPy dispone di una funzione utile per trovare i parametri della regressione lineare.
La regressione lineare è una regressione polinomiale di grado 1 (parleremo della regressione polinomiale nelle sezioni successive). Per questo motivo è necessario impostare deg=1
per ottenere i parametri della regressione lineare.
Ecco un esempio:
import pandas as pd import numpy as np file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the files X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Se non conosci la sintassi beta_1, beta_0 = np.polyfit(X,y,1)
, questa si chiama unpacking. Se hai un iteratore (ad esempio, una lista, un array NumPy o una serie pandas) che contiene due elementi, scrivere
a, b = my_iterator
è equivalente a
a = my_iterator[0]
b = my_iterator[1]
Poiché il risultato della funzione polyfit()
è un array NumPy con due valori, è possibile utilizzare questa sintassi.
Effettuare le Previsioni
Ora possiamo tracciare la retta e prevedere nuove variabili utilizzando i parametri.
import pandas as pd import numpy as np import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters plt.scatter(X,y) # Build a scatter plot plt.plot(X, beta_0 + beta_1 * X, color='red') # Plot the line plt.show()
Ora che abbiamo i parametri, possiamo utilizzare l'equazione della regressione lineare per prevedere nuovi valori.
import pandas as pd import numpy as np import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters X_new = np.array([65, 70, 75]) # Feature values of new instances y_pred = beta_0 + beta_1 * X_new # Predict the target print('Predicted y: ', y_pred)
Quindi è abbastanza semplice ottenere i parametri della regressione lineare. Tuttavia, alcune librerie possono anche fornire informazioni aggiuntive.
Grazie per i tuoi commenti!