Multiple regression w uczeniu maszynowym
- Poprzednia strona Regresja wielokrotna
- Następna strona Skalowanie
Wielokrotne regresje (Multiple Regression)
Wielokrotne regresje są podobne do regresji liniowej, ale mają wiele zmiennych niezależnych, co oznacza, że próbujemy przewidzieć wartość na podstawie dwóch lub więcej zmiennych.
Proszę spojrzeć na zestaw danych poniżej, który zawiera informacje dotyczące samochodów.
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 |
Możemy przewidywać emisję CO2 na podstawie pojemności silnika, ale dzięki wielowymiarowej regresji możemy wprowadzić więcej zmiennych, takich jak masa samochodu, aby poprawić dokładność przewidywań.
Działanie
W Pythonie mamy moduły, które mogą to zrobić. Najpierw zaimportuj moduł Pandas:
import pandas
Moduł Pandas pozwala nam odczytać plik csv i zwrócić obiekt DataFrame.
Ten plik jest używany wyłącznie w celach testowych, możesz go pobrać tutaj:cars.csv
df = pandas.read_csv("cars.csv")
Następnie wypisz wartości niezależne i nazwij tę zmienną X.
Włóż wartości zależne do zmiennej o nazwie y.
X = df[['Weight', 'Volume']] y = df['CO2']
Wskazówka:Zwykle nazwijmy listę wartości niezależnych wielką literą X
Nazwijmy listę wartości zależnych małą literą y
.
Będziemy używać niektórych metod z modułu sklearn, więc również musimy zaimportować ten moduł:
from sklearn import linear_model
W module sklearn, użyjemy LinearRegression()
która tworzy obiekt regresji liniowej.
Obiekt ma metodę o nazwie fit()
Metoda, która przyjmuje niezależne i zależne wartości jako parametry, wypełnia obiekt regresji danymi opisującymi to zależność:
regr = linear_model.LinearRegression() regr.fit(X, y)
Teraz mamy obiekt regresji, który może przewidywać wartości CO2 na podstawie masy i pojemności samochodu:
# Przewiduj emisję CO2 dla auta o masie 2300kg i pojemności 1300ccm: predictedCO2 = regr.predict([[2300, 1300]])
Przykład
Zobacz pełny przykład:
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) # Przewiduj emisję CO2 dla auta o masie 2300kg i pojemności 1300ccm: predictedCO2 = regr.predict([[2300, 1300]]) print(predictedCO2)
Wynik:
[107.2087328]
Przewidujemy, że auto z silnikiem o pojemności 1.3 litra, ważące 2300 kg, wyemituje około 107 g CO2 na każdy przejechany kilometr.
Współczynnik
Współczynnik jest czynnikiem opisującym zależność od zmiennej nieznanej.
Na przykład: jeśli x
To zmienna, wtedy 2x
To x
dwukrotnie.x
To jest zmienna nieznana, liczba 2
To są współczynniki.
W tym przypadku możemy żądać wartości współczynników wagi względem CO2 oraz objętości względem CO2. Otrzymana odpowiedź informuje nas, co się stanie, jeśli zwiększymy lub zmniejszymy jedną z wartości niezależnych.
Przykład
Drukuj 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 wyników
Wynikowy ciąg reprezentuje współczynniki dla wagi i pojemności.
Waga: 0.00755095 Objętość: 0.00780526
Te wartości informują nas, że jeśli masa zwiększy się o 1g, emisja CO2 zwiększy się o 0.00755095g.
Jeśli pojemność silnika (objętość) zwiększy się o 1 ccm, emisja CO2 zwiększy się o 0.00780526g.
Myślę, że to jest rozsądne przypuszczenie, ale proszę przeprowadzić test!
Przewidzieliśmy, że jeśli auto z silnikiem 1300ccm waży 2300 kg, to emisja dwutlenku węgla wyniesie około 107 gramów.
Co się stanie, jeśli zwiększymy masę o 1000g?
Przykład
Skopiuj poprzedni przykład, 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]
Przewidzieliśmy, że auto z silnikiem 1.3 litra i masą 3.3 tony emituje około 115 gramów dwutlenku węgla na każdy przejazd 1 kilometr.
To oznacza, że współczynnik 0.00755095 jest poprawny:
107.2087328 + (1000 * 0.00755095) = 114.75968
- Poprzednia strona Regresja wielokrotna
- Następna strona Skalowanie