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 di 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 utilizzando 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, calcola molte 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. Discuteremo le parti più importanti della tabella nelle sezioni successive.

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

Suggested prompts:

Can you explain what the `add_constant` function does?

What information can I find in the `summary()` output?

How do I interpret the values of `beta_0` and `beta_1`?

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 di 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 utilizzando 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, calcola molte 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. Discuteremo le parti più importanti della tabella nelle sezioni successive.

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