Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Costruzione della Regressione Lineare Utilizzando Statsmodels | Regressione Lineare Semplice
Regressione Lineare con Python

bookCostruzione della Regressione Lineare Utilizzando Statsmodels

Nel capitolo precedente, abbiamo utilizzato una funzione di NumPy per calcolare i parametri.
Ora utilizzeremo invece un oggetto classe per rappresentare la regressione lineare. Questo approccio richiede più righe di codice per trovare i parametri, ma memorizza molte informazioni utili all'interno dell'oggetto e rende la previsione più diretta.

Costruzione di un modello di regressione lineare

In statsmodels, la classe OLS può essere utilizzata per creare un modello di regressione lineare.

Per prima cosa è necessario inizializzare un oggetto della classe OLS utilizzando sm.OLS(y, X_tilde). Successivamente, si addestra il modello tramite il metodo fit().

model = sm.OLS(y, X_tilde)
model = model.fit()

Che equivale a:

model = sm.OLS(y, X_tilde).fit()
Note
Nota

Il costruttore della classe OLS si aspetta come input uno specifico array X_tilde, che abbiamo visto nell'Equazione Normale. Pertanto, è necessario convertire l'array X in X_tilde. Questo è possibile utilizzando la funzione sm.add_constant().

Ricerca dei Parametri

Quando il modello è addestrato, è possibile accedere facilmente ai parametri utilizzando l'attributo params.

12345678910111213141516
import statsmodels.api as sm # import statsmodels 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) # Open the file X, y = df['Father'], df['Height'] # Assign the variables # Get the correct form of input for OLS X_tilde = sm.add_constant(X) # Initialize an OLS object regression_model = sm.OLS(y, X_tilde) # Train the object regression_model = regression_model.fit() # Get the paramters beta_0, beta_1 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1)
copy

Effettuare le Previsioni

Le nuove istanze possono essere facilmente previste utilizzando il metodo predict(), ma è necessario preprocessare anche il loro input:

1234567891011121314151617
import statsmodels.api as sm 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) # Open the file X, y = df['Father'], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Preprocess regression_model = sm.OLS(y, X_tilde) # Initialize an OLS object regression_model = regression_model.fit() # Train the object # Predict new values X_new = np.array([65,70,75]) # Feature values of new instances X_new_tilde = sm.add_constant(X_new) # Preprocess X_new y_pred = regression_model.predict(X_new_tilde) # Predict the target print(y_pred)
copy

Ottenere il Riepilogo

Come probabilmente avrai notato, utilizzare la classe OLS non è semplice come la funzione polyfit(). Tuttavia, l'utilizzo di OLS presenta dei vantaggi. Durante l'addestramento, vengono calcolate numerose informazioni statistiche. È possibile accedere a queste informazioni tramite il metodo summary().

123456789101112
import statsmodels.api as sm 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 X, y = df['Father'], df['Height'] X_tilde = sm.add_constant(X) # Preprocess X regression_model = sm.OLS(y, X_tilde) # Initialize an OLS object regression_model = regression_model.fit() # Train the object # Print the summary print(regression_model.summary())
copy

Sono molte statistiche. Analizzeremo le parti più importanti della tabella nelle prossime sezioni.

question mark

Scegli l'affermazione ERRATA.

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 5.26

bookCostruzione della Regressione Lineare Utilizzando Statsmodels

Scorri per mostrare il menu

Nel capitolo precedente, abbiamo utilizzato una funzione di NumPy per calcolare i parametri.
Ora utilizzeremo invece un oggetto classe per rappresentare la regressione lineare. Questo approccio richiede più righe di codice per trovare i parametri, ma memorizza molte informazioni utili all'interno dell'oggetto e rende la previsione più diretta.

Costruzione di un modello di regressione lineare

In statsmodels, la classe OLS può essere utilizzata per creare un modello di regressione lineare.

Per prima cosa è necessario inizializzare un oggetto della classe OLS utilizzando sm.OLS(y, X_tilde). Successivamente, si addestra il modello tramite il metodo fit().

model = sm.OLS(y, X_tilde)
model = model.fit()

Che equivale a:

model = sm.OLS(y, X_tilde).fit()
Note
Nota

Il costruttore della classe OLS si aspetta come input uno specifico array X_tilde, che abbiamo visto nell'Equazione Normale. Pertanto, è necessario convertire l'array X in X_tilde. Questo è possibile utilizzando la funzione sm.add_constant().

Ricerca dei Parametri

Quando il modello è addestrato, è possibile accedere facilmente ai parametri utilizzando l'attributo params.

12345678910111213141516
import statsmodels.api as sm # import statsmodels 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) # Open the file X, y = df['Father'], df['Height'] # Assign the variables # Get the correct form of input for OLS X_tilde = sm.add_constant(X) # Initialize an OLS object regression_model = sm.OLS(y, X_tilde) # Train the object regression_model = regression_model.fit() # Get the paramters beta_0, beta_1 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1)
copy

Effettuare le Previsioni

Le nuove istanze possono essere facilmente previste utilizzando il metodo predict(), ma è necessario preprocessare anche il loro input:

1234567891011121314151617
import statsmodels.api as sm 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) # Open the file X, y = df['Father'], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Preprocess regression_model = sm.OLS(y, X_tilde) # Initialize an OLS object regression_model = regression_model.fit() # Train the object # Predict new values X_new = np.array([65,70,75]) # Feature values of new instances X_new_tilde = sm.add_constant(X_new) # Preprocess X_new y_pred = regression_model.predict(X_new_tilde) # Predict the target print(y_pred)
copy

Ottenere il Riepilogo

Come probabilmente avrai notato, utilizzare la classe OLS non è semplice come la funzione polyfit(). Tuttavia, l'utilizzo di OLS presenta dei vantaggi. Durante l'addestramento, vengono calcolate numerose informazioni statistiche. È possibile accedere a queste informazioni tramite il metodo summary().

123456789101112
import statsmodels.api as sm 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 X, y = df['Father'], df['Height'] X_tilde = sm.add_constant(X) # Preprocess X regression_model = sm.OLS(y, X_tilde) # Initialize an OLS object regression_model = regression_model.fit() # Train the object # Print the summary print(regression_model.summary())
copy

Sono molte statistiche. Analizzeremo le parti più importanti della tabella nelle prossime sezioni.

question mark

Scegli l'affermazione ERRATA.

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 4
some-alt