Costruzione 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()
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
.
12345678910111213141516import 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)
Effettuare le Previsioni
Le nuove istanze possono essere facilmente previste utilizzando il metodo predict()
, ma è necessario preprocessare anche il loro input:
1234567891011121314151617import 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)
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()
.
123456789101112import 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())
Sono molte statistiche. Discuteremo le parti più importanti della tabella nelle sezioni successive.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Costruzione 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()
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
.
12345678910111213141516import 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)
Effettuare le Previsioni
Le nuove istanze possono essere facilmente previste utilizzando il metodo predict()
, ma è necessario preprocessare anche il loro input:
1234567891011121314151617import 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)
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()
.
123456789101112import 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())
Sono molte statistiche. Discuteremo le parti più importanti della tabella nelle sezioni successive.
Grazie per i tuoi commenti!