Apprendimento automatico - Regressione multivariata
- Pagina precedente Regressione polinomiale
- Pagina successiva Zoom
Regressione multivariata (Multiple Regression)
La regressione multivariata è simile alla regressione lineare, ma ha più valori indipendenti, il che significa che cerchiamo di prevedere un valore basandoci su due o più variabili.
Vediamo i dati qui sotto, che contengono alcune informazioni sull'auto.
Car | Model | Volume | Weight | CO2 |
---|---|---|---|---|
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Space Star | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Cooper | 1500 | 1140 | 105 |
VW | Up! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | A-Class | 1500 | 1365 | 92 |
Ford | Fiesta | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Swift | 1300 | 990 | 101 |
Ford | Fiesta | 1000 | 1112 | 99 |
Honda | Civic | 1600 | 1252 | 94 |
Hundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Rapid | 1600 | 1119 | 104 |
Ford | Focus | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | Insignia | 2000 | 1428 | 99 |
Mercedes | C-Class | 2100 | 1365 | 99 |
Skoda | Octavia | 1600 | 1415 | 99 |
Volvo | S60 | 2000 | 1415 | 99 |
Mercedes | CLA | 1500 | 1465 | 102 |
Audi | A4 | 2000 | 1490 | 104 |
Audi | A6 | 2000 | 1725 | 114 |
Volvo | V70 | 1600 | 1523 | 109 |
BMW | 5 | 2000 | 1705 | 114 |
Mercedes | E-Class | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Ford | B-Max | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
Possiamo prevedere l'emissione di CO2 di un'auto in base alla cilindrata del motore, ma attraverso la regressione multivariata, possiamo introdurre più variabili, come il peso dell'auto, per rendere la previsione più accurata.
Principio di funzionamento
In Python, abbiamo moduli che possono fare questo lavoro. Prima di tutto, importiamo il modulo Pandas:
import pandas
Il modulo Pandas ci permette di leggere i file csv e restituire un oggetto DataFrame.
Questo file è utilizzato solo a scopo di test, puoi scaricarlo qui:cars.csv
df = pandas.read_csv("cars.csv")
Poi elenca i valori indipendenti e chiama questa variabile X.
Metti i valori correlati in una variabile chiamata y.
X = df[['Weight', 'Volume']] y = df['CO2']
Suggerimento:Di solito, chiamiamo la lista dei valori indipendenti con maiuscolo X
e chiamiamo la lista dei valori correlati con minuscolo y
.
Useremo alcuni metodi del modulo sklearn, quindi dobbiamo anche importare il modulo:
from sklearn import linear_model
Nel modulo sklearn, useremo LinearRegression()
per creare un oggetto di regressione lineare.
L'oggetto ha un metodo chiamato fit()
Il metodo, che prende come parametri i valori indipendenti e dipendenti, e riempie l'oggetto di regressione con i dati che descrivono questa relazione:
regr = linear_model.LinearRegression() regr.fit(X, y)
Ora, abbiamo un oggetto di regressione che può prevedere il valore di CO2 in base al peso e alla cilindrata dell'auto:
# Prevedere l'emissione di CO2 di un'auto con peso di 2300kg e cilindrata di 1300ccm: predictedCO2 = regr.predict([[2300, 1300]])
Esempio
Vediamo un esempio completo:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) # Prevedere l'emissione di CO2 di un'auto con peso di 2300kg e cilindrata di 1300ccm: predictedCO2 = regr.predict([[2300, 1300]]) print(predictedCO2)
Risultato:
[107.2087328]
Prevediamo che un'auto con motore da 1.3 litri e peso di 2300 kg rilasci circa 107 grammi di CO2 ogni chilometro.
Coefficienti
I coefficienti sono fattori che descrivono la relazione con le variabili indeterminate.
Ad esempio: se x
Se una variabile è 2x
È x
doppio.x
Sono variabili indeterminate, numeri 2
Sono coefficienti.
In questo caso, possiamo richiedere i coefficienti di peso rispetto a CO2 e i coefficienti di volume rispetto a CO2. La risposta che otteniamo ci dice cosa accadrà se aumentiamo o riduciamo uno dei valori indipendenti.
Esempio
Stampare i coefficienti dell'oggetto di regressione:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) print(regr.coef_)
Risultato:
[0.00755095 0.00780526]
Spiegazione dei risultati
L'array dei risultati rappresenta i coefficienti di peso e cilindrata.
Peso: 0.00755095 Volume: 0.00780526
Questi valori ci dicono che se il peso aumenta di 1g, l'emissione di CO2 aumenterà di 0.00755095g.
Se la dimensione (volume) del motore aumenta di 1 ccm, la emissione di CO2 aumenterà di 0.00780526g.
Penso che sia una previsione ragionevole, ma fatelo ancora un test!
Abbiamo già previsto che se un'auto con motore da 1300ccm pesa 2300 kg, l'emissione di anidride carbonica sarà circa 107 grammi.
Cosa succederebbe se aumentassimo il peso di 1000g?
Esempio
Copia l'esempio precedente, ma cambia il peso dell'auto da 2300 a 3300:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) predictedCO2 = regr.predict([[3300, 1300]]) print(predictedCO2)
Risultato:
[114.75968007]
Abbiamo previsto che un'auto con motore da 1.3 litri e peso di 3.3 tonnellate emetterà circa 115 grammi di anidride carbonica ogni chilometro percorso.
Questo indica che il coefficiente di 0.00755095 è corretto:
107.2087328 + (1000 * 0.00755095) = 114.75968
- Pagina precedente Regressione polinomiale
- Pagina successiva Zoom