تنظیم یادگیری ماشین
- اجرای مثال برگشت به پیشین
- صفحه بعدی آموزش/تست
مقیاسدهی ویژگیها (Scale Features)
وقتی دادههای شما دارای مقادیر مختلفی هستند، حتی با واحدهای اندازهگیری مختلف، ممکن است مقایسه آنها دشوار باشد. کیلوگرم در مقایسه با متر چطور است؟ یا ارتفاع در مقایسه با زمان؟
جواب این سوال مقیاسپذیری است. میتوانیم دادهها را به مقیاسپذیری جدیدی تبدیل کنیم.
لطفاً جدول زیر را ببینید، که با آن مابرگشت به پیشیندر این فصل از دادههای مشابه استفاده شده است، اما این بار، واحدهای Column Volume به لیتر تبدیل شدهاند، نه ccm (1000 به جای 1.0).
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 |
دشوار است که حجم 1.0 را با وزن 790 مقایسه کنیم، اما اگر هر دو را به مقادیر قابل مقایسه تبدیل کنیم، میتوانیم به راحتی ببینیم که مقادیر چقدر با یکدیگر تفاوت دارند.
روشهای مختلفی برای تنظیم دادهها وجود دارد، در این آموزش، ما از روشی به نام استانداردسازی (standardization) استفاده خواهیم کرد.
روش استانداردسازی از فرمول زیر استفاده میکند:
z = (x - u) / s
که در آن z مقادیر جدید، x مقادیر اولیه، u میانگین و s انحراف معیار است.
اگر از مجموعه دادههای بالا مقادیر weight اگر در ستونها، اولین مقادیر 790 باشند، مقادیر بعد از تنظیم:
(790 - 1292.23) / 238.74 = -2.1
اگر از مجموعه دادههای بالا مقادیر volume اگر در ستونها، اولین مقادیر 1.0 باشند، مقادیر بعد از تنظیم:
(1.0 - 1.61) / 0.38 = -1.59
حالا میتوانید -2.1 را با -1.59 مقایسه کنید، نه با 790 و 1.0.
شما نمیبایستی این عمل را به صورت دستی انجام دهید، ماژول sklearn Python یک نام دارد StandardScaler()
روشی که با استفاده از آن شیء Scaler با روش تبدیل دادههای مجموعه داده بازمیگردد.
پس از کوچک کردن مجموعه دادهها، باید از مقیاسبندی استفاده شود تا نتایج پیشبینی شده را بدست آوریم:
تنظیم تمامی مقادیر Weight و Volume در ستونها:
پیشبینی میزان انتشار دیاکسید کربن یک خودروی 2300 کیلوگرم با گنجایش 1.3 لیتر: import pandas از sklearn import linear_model از sklearn.preprocessing import StandardScaler scale = StandardScaler() df = pandas.read_csv("cars2.csv") y = df['CO2'] print(scaledX)
print(predictedCO2)
لطفا توجه داشته باشید که دو اولین مقدار -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]
预测 CO2 值
برگشت به پیشینپیشبینی مقدار CO2
یک ماموریت در این فصل این است که با توجه به وزن و گنجایش خودرو، میزان انتشار دیاکسید کربن آن را پیشبینی کنیم.
پس از کوچک کردن مجموعه دادهها، باید از مقیاسبندی استفاده شود تا نتایج پیشبینی شده را بدست آوریم:
مثال
پیشبینی میزان انتشار دیاکسید کربن یک خودروی 2300 کیلوگرم با گنجایش 1.3 لیتر: import pandas از sklearn import linear_model از 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)
نتیجه:
- اجرای مثال برگشت به پیشین
- صفحه بعدی آموزش/تست