Machine Learning - Scaling
- Nangungunang Pahina Maramihang Pagbabalik
- Susunod na Pahina Pagsasanay/Pagsusuri
Feature Scaling (Scale Features)
Kapag ang iyong datos ay may magkakaibang halaga, kahit na gamit ang iba't ibang sistema ng pagsukat, maaaring mahirap silang paghahambing. Ano ang magiging halaga ng kilo kumpara sa metro? O kung magkakaroon ng ibang sistema ng pagsukat para sa taon ng altitud?
Ang sagot sa tanong na ito ay scaling. Maaari naming i-scale ang data upang maging madaling paghahambing sa bagong halaga.
Mangyaring tingnan ang sumusunod na talahanayan, na ito ay kapareho saMaramihang PagbabalikIn ang pinagmumulan ng datos ay magkapareho, ngunit sa pagkakataong ito, ang unidade ng Volume ay litro, hindi ccm (1.0 kung hindi 1000).
Car | Model | Volume | Weight | 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-Class | 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 |
Mahirap na maghahalintulad ang baryo 1.0 at ang bigat na 790, ngunit kung ayusin sila sa kaparehong halaga, madaling makita kung gaano karami ang pagkakaiba ng isang halaga sa ibang halaga.
Mayroong maraming paraan para sa pagsuwayin ng data, sa ganoong tutorial, gagamitin namin ang isang pangalan na standardization (standardization).
Ang pamamaraan ng standardization ay gumagamit ng sumusunod na formula:
z = (x - u) / s
Kung saan z ay ang bagong halaga, x ay ang orihinal na halaga, u ay ang average, at s ay ang standard deviation.
Kung kinukuha mula sa itaas na dataset: weight Kung ang column, ang unang halaga ay 790, ang halaga pagkatapos ng pagsuwayin ay:
(790 - 1292.23) / 238.74 = -2.1
Kung kinukuha mula sa itaas na dataset: volume Kung ang column, ang unang halaga ay 1.0, ang halaga pagkatapos ng pagsuwayin ay:
(1.0 - 1.61) / 0.38 = -1.59
Ngayon, maaari mo ng maghahalintulad ng -2.1 at -1.59, sa halip na maghahalintulad ng 790 at 1.0.
Hindi kailangan mong gumawa ng pagkilos na ito, ang Python sklearn module ay may isang pangalan na StandardScaler()
ang paraan, na ibibigay ng Scaler object na may paraan na pagbabago ng dataset.
Halimbawa
Tiyakang suwayin ang lahat ng halaga sa column ng Weight at Volume:
import pandas from sklearn import linear_model from sklearn.preprocessing import StandardScaler scale = StandardScaler() df = pandas.read_csv("cars2.csv") X = df[['Weight', 'Volume']] scaledX = scale.fit_transform(X) print(scaledX)
Mga Resulta:
P请注意,前两个值是 -2.1 和 -1.59,与我们的计算相对应:
[[-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]
Hulaan ang halaga ng CO2
Maramihang PagbabalikAng tungkulin ng isang kabanata ay hulaan ang pagbubuntis ng carbon dioxide ng isang sasakyan habang alam lamang ang bigat at pagbubuntis ng sasakyan.
Kailangan gamitin ang proporsyon ng pag-scale kapag hinuhula ang halaga sa nakascale na dataset:
Halimbawa
Hulaan ang halaga ng pagbubuntis ng carbon dioxide ng isang 1.3 litrong sasakyan na may bigat na 2300 kilo:
import pandas from sklearn import linear_model from sklearn.preprocessing import StandardScaler scale = StandardScaler() df = pandas.read_csv("cars2.csv") X = df[['Weight', '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)
Mga Resulta:
[107.2087328]
- Nangungunang Pahina Maramihang Pagbabalik
- Susunod na Pahina Pagsasanay/Pagsusuri