Costruzione della Regressione Lineare
Hai già appreso 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:
123456import 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
Il dataset presenta due colonne: la prima è 'Father', che rappresenta la caratteristica di input, e la seconda è 'Height', che costituisce la nostra variabile target.
Assegneremo i valori target alla variabile y e i valori della caratteristica a X, quindi costruiremo uno scatterplot.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Ricerca dei Parametri
Per implementare la regressione lineare in Scikit-learn, si utilizza la classe LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parametri
La classe LinearRegression dispone di diversi parametri che controllano il modo in cui il modello viene adattato.
fit_intercept(default=True): Determina se calcolare l'intercetta (bias) per questo modello. Se impostato suFalse, nessuna intercetta verrà utilizzata nei calcoli (ovvero, i dati si presumono centrati).copy_X(default=True): SeTrue, X verrà copiato; altrimenti, potrebbe essere sovrascritto.n_jobs(default=None): Numero di processi da utilizzare per il calcolo. Questo fornisce un'accelerazione solo per n_targets > 1 e problemi sufficientemente grandi.Nonesignifica 1 a meno che non si sia in un contestojoblib.parallel_backend.-1indica l'utilizzo di tutti i processori.positive(default=False): Se impostato suTrue, forza i coefficienti ad essere positivi. Questa opzione è supportata solo per array densi.
Metodi Comuni
fit(X, y): Adatta il modello lineare.predict(X): Predice utilizzando il modello lineare.score(X, y): Restituisce il coefficiente di determinazione della previsione.
Attributi
coef_: Coefficienti stimati per il problema di regressione lineare.intercept_: Termine indipendente nel modello lineare.
In Scikit-learn, utilizziamo la classe LinearRegression dal modulo linear_model. A differenza di NumPy, qui non definiamo il grado; questa classe è specificamente progettata per modelli lineari. Usiamo il metodo .fit() per calcolare i parametri.
Ecco un esempio:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Se non si ha familiarità con la sintassi model.intercept_ e model.coef_, si tratta di una convenzione di Scikit-learn. Gli attributi che vengono calcolati (appresi) durante il processo di addestramento terminano sempre con un trattino basso _ (ad esempio, intercept_, coef_).
L'attributo intercept_ è un singolo valore, mentre coef_ è un array che contiene i coefficienti per ciascuna caratteristica (nella regressione lineare semplice, contiene solo un elemento).
Effettuare le Previsioni
Ora possiamo tracciare la retta e prevedere nuove variabili utilizzando il modello addestrato.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Ora che abbiamo il modello addestrato, possiamo utilizzare il metodo .predict() per prevedere nuovi valori.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(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!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 3.33
Costruzione della Regressione Lineare
Scorri per mostrare il menu
Hai già appreso 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:
123456import 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
Il dataset presenta due colonne: la prima è 'Father', che rappresenta la caratteristica di input, e la seconda è 'Height', che costituisce la nostra variabile target.
Assegneremo i valori target alla variabile y e i valori della caratteristica a X, quindi costruiremo uno scatterplot.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Ricerca dei Parametri
Per implementare la regressione lineare in Scikit-learn, si utilizza la classe LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parametri
La classe LinearRegression dispone di diversi parametri che controllano il modo in cui il modello viene adattato.
fit_intercept(default=True): Determina se calcolare l'intercetta (bias) per questo modello. Se impostato suFalse, nessuna intercetta verrà utilizzata nei calcoli (ovvero, i dati si presumono centrati).copy_X(default=True): SeTrue, X verrà copiato; altrimenti, potrebbe essere sovrascritto.n_jobs(default=None): Numero di processi da utilizzare per il calcolo. Questo fornisce un'accelerazione solo per n_targets > 1 e problemi sufficientemente grandi.Nonesignifica 1 a meno che non si sia in un contestojoblib.parallel_backend.-1indica l'utilizzo di tutti i processori.positive(default=False): Se impostato suTrue, forza i coefficienti ad essere positivi. Questa opzione è supportata solo per array densi.
Metodi Comuni
fit(X, y): Adatta il modello lineare.predict(X): Predice utilizzando il modello lineare.score(X, y): Restituisce il coefficiente di determinazione della previsione.
Attributi
coef_: Coefficienti stimati per il problema di regressione lineare.intercept_: Termine indipendente nel modello lineare.
In Scikit-learn, utilizziamo la classe LinearRegression dal modulo linear_model. A differenza di NumPy, qui non definiamo il grado; questa classe è specificamente progettata per modelli lineari. Usiamo il metodo .fit() per calcolare i parametri.
Ecco un esempio:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Se non si ha familiarità con la sintassi model.intercept_ e model.coef_, si tratta di una convenzione di Scikit-learn. Gli attributi che vengono calcolati (appresi) durante il processo di addestramento terminano sempre con un trattino basso _ (ad esempio, intercept_, coef_).
L'attributo intercept_ è un singolo valore, mentre coef_ è un array che contiene i coefficienti per ciascuna caratteristica (nella regressione lineare semplice, contiene solo un elemento).
Effettuare le Previsioni
Ora possiamo tracciare la retta e prevedere nuove variabili utilizzando il modello addestrato.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Ora che abbiamo il modello addestrato, possiamo utilizzare il metodo .predict() per prevedere nuovi valori.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(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!