Pembelajaran Mesin - Skala
- Hal Sebelumnya Regresi Multinomial
- Hal Berikutnya Pelatihan/Pengujian
Skala Fitur (Scale Features)
Ketika data Anda memiliki nilai yang berbeda, bahkan menggunakan satuan ukur yang berbeda, mungkin sulit untuk dibandingkan. Berapa kilogram dibandingkan meter? Atau ketinggian dibandingkan waktu?
Jawaban atas masalah ini adalah skala. Kita dapat menskalakan data menjadi nilai baru yang mudah dibandingkan.
Lihat tabel di bawah ini, yang disertai denganRegresi MultinomialData yang digunakan di bab ini sama, tetapi kali ini, kolom Volume berisi satuan liter, bukannya ccm (1,0 bukannya 1000).
Mobil | Model | Volume | Berat | CO2 |
---|---|---|---|---|
Toyota | Aygo | 1.0 | 790 | 99 |
Mitsubishi | Space Star | 1,2 | 1160 | 95 |
Skoda | Citigo | 1.0 | 929 | 95 |
Fiat | 500 | 0,9 | 865 | 90 |
Mini | Cooper | 1.5 | 1140 | 105 |
VW | Up! | 1.0 | 929 | 105 |
Skoda | Fabia | 1,4 | 1109 | 90 |
Mercedes | A-Kelas | 1.5 | 1365 | 92 |
Ford | Fiesta | 1.5 | 1112 | 98 |
Audi | A1 | 1.6 | 1150 | 99 |
Hyundai | I20 | 1.1 | 980 | 99 |
Suzuki | Swift | 1.3 | 990 | 101 |
Ford | Fiesta | 1.0 | 1112 | 99 |
Honda | Civic | 1.6 | 1252 | 94 |
Hundai | I30 | 1.6 | 1326 | 97 |
Opel | Astra | 1.6 | 1330 | 97 |
BMW | 1 | 1.6 | 1365 | 99 |
Mazda | 3 | 2.2 | 1280 | 104 |
Skoda | Rapid | 1.6 | 1119 | 104 |
Ford | Focus | 2.0 | 1328 | 105 |
Ford | Mondeo | 1.6 | 1584 | 94 |
Opel | Insignia | 2.0 | 1428 | 99 |
Mercedes | C-Class | 2.1 | 1365 | 99 |
Skoda | Octavia | 1.6 | 1415 | 99 |
Volvo | S60 | 2.0 | 1415 | 99 |
Mercedes | CLA | 1.5 | 1465 | 102 |
Audi | A4 | 2.0 | 1490 | 104 |
Audi | A6 | 2.0 | 1725 | 114 |
Volvo | V70 | 1.7 | 1523 | 109 |
BMW | 5 | 2.0 | 1705 | 114 |
Mercedes | E-Class | 2.1 | 1605 | 115 |
Volvo | XC70 | 2.0 | 1746 | 117 |
Ford | B-Max | 1.6 | 1235 | 104 |
BMW | 2 | 1.6 | 1390 | 108 |
Opel | Zafira | 1.6 | 1405 | 109 |
Mercedes | SLK | 2.5 | 1395 | 120 |
Sulit untuk membandingkan kapasitas 1.0 dengan berat 790, tetapi jika kita skala keduanya menjadi nilai yang dapat dibandingkan, kita dapat dengan mudah melihat berapa nilai yang satu sama lain dibandingkan.
Ada banyak metode skala data, dalam tutorial ini, kita akan menggunakan metode yang disebut standarisasi (standardization).
Metode standarisasi menggunakan formula berikut:
z = (x - u) / s
di mana z adalah nilai baru, x adalah nilai asli, u adalah rata-rata, dan s adalah standar deviasi.
Jika mendapatkan data dari dataset di atas weight kolom, nilai pertama adalah 790, nilai yang diskalakan adalah:
(790 - 1292.23) / 238.74 = -2.1
Jika mendapatkan data dari dataset di atas volume kolom, nilai pertama adalah 1.0, nilai yang diskalakan adalah:
(1.0 - 1.61) / 0.38 = -1.59
Sekarang, Anda dapat membandingkan -2.1 dengan -1.59, bukannya membandingkan 790 dengan 1.0.
Anda tidak perlu melakukannya secara manual, modul Python sklearn memiliki nama StandardScaler()
metoden, metode ini mengembalikan objek Scaler dengan metode dataset yang diubah.
Contoh
Skala semua nilai di kolom Weight dan Volume:
import pandas from sklearn import linear_model from sklearn.preprocessing import StandardScaler scale = StandardScaler() df = pandas.read_csv("cars2.csv") X = df[['Berat', 'Volume']] scaledX = scale.fit_transform(X) print(scaledX)
Hasil:
Perhatian, nilai pertama dan kedua adalah -2.1 dan -1.59, yang sejalan dengan perhitungan kami:
[[-2.10389253 -1.59336644]] [-0.55407235 -1.07190106] [-1.52166278 -1.59336644] [-1.78973979 -1.85409913] [-0.63784641 -0.28970299] [-1.52166278 -1.59336644] [-0.76769621 -0.55043568] [ 0.3046118 -0.28970299] [-0.7551301 -0.28970299] [-0.59595938 -0.0289703 ] [-1.30803892 -1.33263375] [-1.26615189 -0.81116837] [-0.7551301 -1.59336644] [-0.16871166 -0.0289703 ] [ 0.14125238 -0.0289703 ] [ 0.15800719 -0.0289703 ] [ 0.3046118 -0.0289703 ] [-0.05142797 1.53542584] [-0.72580918 -0.0289703 ] [ 0.14962979 1.01396046] [ 1.2219378 -0.0289703 ] [ 0.5685001 1.01396046] [ 0.3046118 1.27469315] [ 0.51404696 -0.0289703 ] [ 0.51404696 1.01396046] [ 0.72348212 -0.28970299] [ 0.8281997 1.01396046] [ 1.81254495 1.01396046] [ 0.96642691 -0.0289703 ] [ 1.72877089 1.01396046] [ 1.30990057 1.27469315] [ 1.90050772 1.01396046] [-0.23991961 -0.0289703 ] [ 0.40932938 -0.0289703 ] [ 0.47215993 -0.0289703 ] [ 0.4302729 2.31762392]
Prediksi nilai CO2
Regresi MultinomialTugas bab ini adalah untuk memprediksi emisi karbon dioksida dengan hanya mengetahui berat dan volume mobil.
Setelah dataset diskalakan, harus digunakan skala skala saat menghitung nilai prediksi:
Contoh
Prediksi emisi karbon dioksida untuk mobil berat 2300 kilogram dan 1.3 liter:
import pandas from sklearn import linear_model from sklearn.preprocessing import StandardScaler scale = StandardScaler() df = pandas.read_csv("cars2.csv") X = df[['Berat', 'Volume']] y = df['CO2'] scaledX = scale.fit_transform(X) regr = linear_model.LinearRegression() regr.fit(scaledX, y) scaled = scale.transform([[2300, 1.3]]) predictedCO2 = regr.predict([scaled[0]]) print(predictedCO2)
Hasil:
[107.2087328]
- Hal Sebelumnya Regresi Multinomial
- Hal Berikutnya Pelatihan/Pengujian