Uczenie maszynowe — regresja wielokrotna
Regresja wielokrotna
Regresja wielokrotna jest jak regresja liniowa , ale z więcej niż jedną niezależną wartością, co oznacza, że próbujemy przewidzieć wartość na podstawie dwóch lub więcej zmiennych.
Spójrz na poniższy zestaw danych, zawiera on informacje o samochodach.
Samochód | Model | Tom | Waga | CO2 |
Toyota | Ajgo | 1000 | 790 | 99 |
Mitsubishi | Kosmiczna gwiazda | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Placet | 500 | 900 | 865 | 90 |
Mini | Bednarz | 1500 | 1140 | 105 |
VW | W górę! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | Klasa | 1500 | 1365 | 92 |
Bród | Fiesta | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Szybki | 1300 | 990 | 101 |
Bród | Fiesta | 1000 | 1112 | 99 |
Honda | Obywatelski | 1600 | 1252 | 94 |
Hyundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Nagły | 1600 | 1119 | 104 |
Bród | Centrum | 2000 | 1328 | 105 |
Bród | Mondeo | 1600 | 1584 | 94 |
Opel | Insygnia | 2000 | 1428 | 99 |
Mercedes | Klasa C | 2100 | 1365 | 99 |
Skoda | Oktawia | 1600 | 1415 | 99 |
Volvo | S60 | 2000 | 1415 | 99 |
Mercedes | CAO | 1500 | 1465 | 102 |
Audi | A4 | 2000 | 1490 | 104 |
Audi | A6 | 2000 | 1725 | 114 |
Volvo | V70 | 1600 | 1523 | 109 |
BMW | 5 | 2000 | 1705 | 114 |
Mercedes | Klasa E | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Bród | B-maks. | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
Możemy przewidzieć emisję CO2 przez samochód na podstawie wielkości silnika, ale dzięki regresji wielokrotnej możemy dodać więcej zmiennych, takich jak waga samochodu, aby prognoza była dokładniejsza.
Jak to działa?
W Pythonie mamy moduły, które wykonają za nas pracę. Zacznij od zaimportowania modułu Pandy.
import pandas
Dowiedz się więcej o module Pandy w naszym samouczku dotyczącym Pand .
Moduł Pandas umożliwia odczytywanie plików csv i zwracanie obiektu DataFrame.
Plik jest przeznaczony wyłącznie do celów testowych, można go pobrać tutaj: cars.csv
df = pandas.read_csv("cars.csv")
Następnie zrób listę niezależnych wartości i wywołaj tę zmienną X
.
Umieść zależne wartości w zmiennej o nazwie y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
Wskazówka: często nazywa się listę niezależnych wartości wielką literą X, a listę wartości zależnych małą literą y.
Użyjemy kilku metod z modułu sklearn, więc będziemy musieli zaimportować również ten moduł:
from sklearn import linear_model
Z modułu sklearn użyjemy LinearRegression()
metody do stworzenia obiektu regresji liniowej.
Ten obiekt ma wywołaną metodę fit()
, która pobiera niezależne i zależne wartości jako parametry i wypełnia obiekt regresji danymi opisującymi relację:
regr = linear_model.LinearRegression()
regr.fit(X, y)
Teraz mamy obiekt regresji, który jest gotowy do przewidywania wartości CO2 na podstawie masy i objętości samochodu:
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Przykład
Zobacz cały przykład w akcji:
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)
Wynik:
[107.2087328]
Przewidzieliśmy, że samochód z silnikiem o pojemności 1,3 litra i wadze 2300 kg będzie emitował około 107 gramów CO2 na każdy przejechany kilometr.
Współczynnik
Współczynnik jest czynnikiem opisującym związek z nieznaną zmienną.
Przykład: jeśli x
jest zmienną, to
2x
jest x
dwa razy. x
to nieznana zmienna, a liczba 2
to współczynnik.
W takim przypadku możemy poprosić o wartość współczynnika wagi w stosunku do CO2 i objętości w stosunku do CO2. Otrzymane odpowiedzi mówią nam, co by się stało, gdybyśmy zwiększyli lub zmniejszyli jedną z niezależnych wartości.
Przykład
Wydrukuj wartości współczynników obiektu regresji:
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_)
Wynik:
[0.00755095 0.00780526]
Wyjaśnienie wyniku
Tablica wyników reprezentuje wartości współczynników wagi i objętości.
Waga: 0,00755095
Objętość: 0,00780526
Te wartości mówią nam, że jeśli masa wzrośnie o 1kg, emisja CO2 wzrośnie o 0,00755095g.
A jeśli wielkość silnika (objętość) wzrośnie o 1 cm 3 , emisja CO2 wzrośnie o 0,00780526 g.
Myślę, że to słuszne przypuszczenie, ale przetestujmy to!
Przewidywaliśmy już, że jeśli samochód z silnikiem 1300cm3 waży 2300kg, emisja CO2 wyniesie około 107g.
Co jeśli zwiększymy wagę o 1000kg?
Przykład
Skopiuj przykład z poprzedniego, ale zmień wagę z 2300 na 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)
Wynik:
[114.75968007]
Przewidywaliśmy, że samochód z silnikiem o pojemności 1,3 litra i wadze 3300 kg będzie emitował około 115 gramów CO2 na każdy przejechany kilometr.
Co pokazuje, że współczynnik 0,00755095 jest poprawny:
107,2087328 + (1000 * 0,00755095) = 114,75968