Regresi berganda hampir sama seperti regresi linier, tetapi bedanya regresi berganda memiliki lebih dari satu nilai independen, artinya kita mencoba memprediksi suatu nilai berdasarkan dua variabel atau lebih.
Lihatlah kumpulan data di bawah ini, yang berisi beberapa informasi tentang mobil.
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 |
Kita dapat memprediksi emisi CO2 mobil berdasarkan ukuran mesinnya, tetapi dengan regresi berganda kita dapat memasukkan lebih banyak variabel, seperti berat mobil, untuk membuat prediksi lebih akurat.
Bagaimana cara kerjanya?
Python memiliki modul yang akan melakukan perhitungan regrersi berganda. Caranya dengan mengimport modul Pandas.
import pandas
Modul Pandas memungkinkan kita membaca file csv dan mengembalikan objek DataFrame.
File ini dimaksudkan untuk tujuan pengujian saja, Anda dapat mendownloadnya di sini: cars.csv
df = pandas.read_csv("cars.csv")
Kemudian buat daftar nilai independen dan panggil variabel ini X.
Masukkan nilai dependen ke dalam variabel bernama y.
X = df[[‘Weight’, ‘Volume’]]
y = df[‘CO2’]
Tips: Merupakan hal umum untuk menamai daftar nilai independen dengan huruf besar X, dan daftar nilai dependen dengan huruf kecil y.
Kita akan menggunakan beberapa metode dari modul sklearn, jadi kita harus mengimport modul itu juga:
from sklearn import linear_model
Dari modul sklearn kita akan menggunakan metode LinearRegression() untuk membuat objek regresi linier.
Objek ini memiliki metode yang disebut fit() yang mengambil nilai independen dan dependen sebagai parameter dan mengisi objek regresi dengan data yang menggambarkan hubungan tersebut:
regr = linear_model.LinearRegression()
regr.fit(X, y)
Sekarang kita memiliki objek regresi yang siap untuk memprediksi nilai CO2 berdasarkan berat dan volume mobil:
#predict the CO2 emission of a car where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Contoh:
Lihat seluruh contoh berjalan
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) #prediksi emisi CO2 mobil yang beratnya 2300g, dan volumenya 1300ccm: predictedCO2 = regr.predict([[2300, 1300]]) print(predictedCO2)
Mobil bermesin 1,3 liter dengan bobot 2.300 kg telah diprediksi akan mengeluarkan sekitar 107 gram CO2 untuk setiap kilometer yang dikendarainya.
Koefisien
Koefisien merupakan faktor yang menggambarkan hubungan dengan variabel yang tidak diketahui.
Contoh: jika x adalah variabel, maka 2x adalah x dua kali. x adalah variabel yang tidak diketahui, dan angka 2 adalah koefisien.
Dalam hal ini, kita dapat menanyakan nilai koefisien bobot terhadap CO2, dan volume terhadap CO2. Jawaban yang kita dapatkan memberi tahu kita apa yang akan terjadi jika kita menambah atau mengurangi salah satu nilai independen.
Contoh
Cetak nilai koefisien dari objek regresi
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_)
Penjelasan Hasil
Array hasil mewakili nilai koefisien berat dan volume.
Weight: 0,00755095
Volume: 0,00780526
Nilai-nilai ini memberi tahu kita bahwa jika berat bertambah 1kg, emisi CO2 meningkat 0,00755095g.
Dan jika ukuran mesin (Volume) bertambah 1 cm3, maka emisi CO2 meningkat sebesar 0,00780526 g.
Sepertinya itu adalah tebakan yang cukut akurat, tetapi mari kita uji!
Kita telah memperkirakan bahwa jika mobil bermesin 1300cm3 memiliki berat 2300kg, emisi CO2 akan menjadi sekitar 107g.
Bagaimana jika kita menambah berat dengan 1000kg?
Contoh:
Salin contoh dari sebelumnya, tetapi ubah berat dari 2300 menjadi 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)
Kita telah memprediksikan bahwa mobil bermesin 1,3 liter dan berat 3300 kg akan mengeluarkan sekitar 115 gram CO2 untuk setiap kilometer yang dikendarainya.
Yang menunjukkan bahwa koefisien 0,00755095 benar:
107.2087328 + (1000 * 0,00755095) = 114,75968