Python – مقیاس (Scale)
مقیاسدهی ویژگیها
زمانی که دادههای شما مقادیر و واحدهای اندازهگیری متفاوتی دارند، مقایسه آنها میتواند دشوار باشد. مثلاً کیلوگرم را با متر مقایسه کنید یا ارتفاع را با زمان.
پاسخ به این مشکل، مقیاسدهی است. ما میتوانیم دادهها را به مقادیر جدیدی مقیاسدهی کنیم که مقایسه آنها آسانتر باشد.
در جدول زیر، همان دادههای قبلی را داریم اما این بار ستون حجم مقادیر را به لیتر به جای cm³ (1.0 به جای 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 |
… | … | … | … | … |
مقایسه حجم 1.0 با وزن 790 دشوار است، اما اگر هر دو را به مقادیر قابل مقایسه مقیاسدهی کنیم، به راحتی میتوانیم ببینیم که یکی از مقادیر نسبت به دیگری چقدر است.
روشهای مقیاسدهی
روشهای مختلفی برای مقیاسدهی دادهها وجود دارد. در این آموزش، از روشی به نام استانداردسازی استفاده خواهیم کرد.
استانداردسازی
روش استانداردسازی از فرمول زیر استفاده میکند:
z=s(x−u)
که در آن:
- z مقدار جدید است
- x مقدار اصلی است
- u میانگین است
- s انحراف معیار است
اگر ستون وزن را از دادههای بالا بگیریم، مقدار اول 790 است و مقدار مقیاسدهی شده به صورت زیر خواهد بود:
238.74(790−1292.23)=−2.1
اگر ستون حجم را بگیریم، مقدار اول 1.0 است و مقدار مقیاسدهی شده به صورت زیر خواهد بود:
0.38(1.0−1.61)=−1.59
حالا میتوانید -2.1 را با -1.59 مقایسه کنید به جای اینکه 790 را با 1.0 مقایسه کنید.
استفاده از StandardScaler
شما نیازی به انجام این کار به صورت دستی ندارید، ماژول sklearn
در پایتون دارای متدی به نام StandardScaler()
است که شیء Scaler با روشهایی برای تبدیل دادهها را باز میگرداند.
مثال
مقیاسدهی تمام مقادیر در ستونهای وزن و حجم:
import pandas
from sklearn.preprocessing import StandardScaler
# خواندن دادهها
df = pandas.read_csv("data.csv")
# انتخاب ستونهای وزن و حجم
X = df[['Weight', 'Volume']]
# ایجاد شیء StandardScaler
scale = StandardScaler()
# مقیاسدهی دادهها
scaledX = scale.fit_transform(X)
print(scaledX)
نتیجه: توجه داشته باشید که اولین دو مقدار -2.1 و -1.59 هستند که با محاسبات ما مطابقت دارد:
[[-2.10389253 -1.59336644]
[-0.55407235 -1.07190106]
[-1.52166278 -1.59336644]
[-1.78973979 -1.85409913]
...
[ 0.4302729 2.31762392]]
پیشبینی مقادیر CO2
وظیفه در فصل رگرسیون چندگانه پیشبینی میزان انتشار CO2 از یک خودرو بود زمانی که تنها وزن و حجم آن را میدانید.
زمانی که دادهها مقیاسدهی شدهاند، باید از مقیاس استفاده کنید زمانی که مقادیر را پیشبینی میکنید.
مثال
پیشبینی میزان انتشار CO2 برای خودرویی با حجم 1.3 لیتر که وزن آن 2300 کیلوگرم است:
import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
# خواندن دادهها
df = pandas.read_csv("data.csv")
# انتخاب ستونهای وزن و حجم
X = df[['Weight', 'Volume']]
y = df['CO2']
# ایجاد شیء StandardScaler و مقیاسدهی دادهها
scale = StandardScaler()
scaledX = scale.fit_transform(X)
# ایجاد شیء LinearRegression و آموزش مدل
regr = linear_model.LinearRegression()
regr.fit(scaledX, y)
# مقیاسدهی دادههای جدید
scaled = scale.transform([[2300, 1.3]])
# پیشبینی مقدار CO2
predictedCO2 = regr.predict([scaled[0]])
print(predictedCO2)
نتیجه:
[107.2087328]
ما پیشبینی کردهایم که خودرویی با موتور 1.3 لیتری و وزن 2300 کیلوگرم، به طور تقریبی 107 گرم CO2 به ازای هر کیلومتر تولید خواهد کرد.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام