Apprendimento automatico - Regressione multipla
Regressione multipla
La regressione multipla è come la regressione lineare , ma con più di un valore indipendente, il che significa che proviamo a prevedere un valore basato su due o più variabili.
Dai un'occhiata al set di dati di seguito, contiene alcune informazioni sulle auto.
Macchina | Modello | Volume | Peso | CO2 |
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Stella spaziale | 1200 | 1160 | 95 |
Skoda | Citigine | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Bottaio | 1500 | 1140 | 105 |
VW | Su! | 1000 | 929 | 105 |
Skoda | Fabio | 1400 | 1109 | 90 |
Mercedes | Una classe | 1500 | 1365 | 92 |
Guado | Festa | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Veloce | 1300 | 990 | 101 |
Guado | Festa | 1000 | 1112 | 99 |
Honda | Civico | 1600 | 1252 | 94 |
Hyundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Rapido | 1600 | 1119 | 104 |
Guado | Messa a fuoco | 2000 | 1328 | 105 |
Guado | Mondeo | 1600 | 1584 | 94 |
Opel | Insegne | 2000 | 1428 | 99 |
Mercedes | Classe C | 2100 | 1365 | 99 |
Skoda | Ottavia | 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 | Classe E | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Guado | B-Max | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
Possiamo prevedere le emissioni di CO2 di un'auto in base alle dimensioni del motore, ma con una regressione multipla possiamo inserire più variabili, come il peso dell'auto, per rendere la previsione più accurata.
Come funziona?
In Python abbiamo moduli che faranno il lavoro per noi. Inizia importando il modulo Pandas.
import pandas
Scopri il modulo Panda nel nostro Tutorial Panda .
Il modulo Pandas ci consente di leggere file CSV e restituire un oggetto DataFrame.
Il file è inteso solo a scopo di test, puoi scaricarlo qui: cars.csv
df = pandas.read_csv("cars.csv")
Quindi fare un elenco dei valori indipendenti e chiamare questa variabile X
.
Metti i valori dipendenti in una variabile chiamata y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
Suggerimento: è comune nominare l'elenco dei valori indipendenti con una X maiuscola e l'elenco dei valori dipendenti con una y minuscola.
Useremo alcuni metodi dal modulo sklearn, quindi dovremo importare anche quel modulo:
from sklearn import linear_model
Dal modulo sklearn utilizzeremo il LinearRegression()
metodo per creare un oggetto di regressione lineare.
Questo oggetto ha un metodo chiamato fit()
che prende i valori indipendenti e dipendenti come parametri e riempie l'oggetto di regressione con dati che descrivono la relazione:
regr = linear_model.LinearRegression()
regr.fit(X, y)
Ora abbiamo un oggetto di regressione pronto per prevedere i valori di CO2 in base al peso e al volume di un'auto:
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Esempio
Guarda l'intero esempio in azione:
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)
#predict the CO2
emission of a car where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)
Risultato:
[107.2087328]
Abbiamo previsto che un'auto con motore da 1,3 litri e un peso di 2300 kg rilascerà circa 107 grammi di CO2 per ogni chilometro percorso.
Coefficiente
Il coefficiente è un fattore che descrive la relazione con una variabile sconosciuta.
Esempio: se x
è una variabile, allora
2x
è x
due volte. x
è la variabile sconosciuta e il numero 2
è il coefficiente.
In questo caso, possiamo chiedere il valore del coefficiente di peso rispetto alla CO2, e per il volume rispetto alla CO2. Le risposte che otteniamo ci dicono cosa accadrebbe se aumentassimo o diminuissimo uno dei valori indipendenti.
Esempio
Stampa i valori dei 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]
Risultato spiegato
La matrice dei risultati rappresenta i valori dei coefficienti di peso e volume.
Peso: 0,00755095
Volume: 0,00780526
Questi valori ci dicono che se il peso aumenta di 1 kg, l'emissione di CO2 aumenta di 0,00755095 g.
E se la cilindrata (Volume) aumenta di 1 cm 3 , l'emissione di CO2 aumenta di 0,00780526 g.
Penso che sia un'ipotesi giusta, ma proviamola!
Abbiamo già previsto che se un'auto con un motore da 1300 cm 3 pesa 2300 kg, l'emissione di CO2 sarà di circa 107 g.
E se aumentassimo il peso di 1000 kg?
Esempio
Copia l'esempio di prima, ma cambia il peso 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 un peso di 3300 kg rilascerà circa 115 grammi di CO2 per ogni chilometro percorso.
Il che mostra che il coefficiente di 0,00755095 è corretto:
107.2087328 + (1000 * 0.00755095) = 114.75968