Costruzione 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()
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, vengono calcolate numerose 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. Analizzeremo le parti più importanti della tabella nelle prossime sezioni.
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
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 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()
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, vengono calcolate numerose 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. Analizzeremo le parti più importanti della tabella nelle prossime sezioni.
Grazie per i tuoi commenti!