تعلم الآلة - مقياس
مقياس الميزات
عندما تحتوي بياناتك على قيم مختلفة ، وحتى وحدات قياس مختلفة ، فقد يكون من الصعب مقارنتها. ما هو الكيلوجرام مقارنة بالمتر؟ أم ارتفاع مقارنة بالوقت؟
الجواب على هذه المشكلة هو التوسع. يمكننا تحجيم البيانات إلى قيم جديدة يسهل مقارنتها.
ألقِ نظرة على الجدول أدناه ، فهو نفس مجموعة البيانات التي استخدمناها في فصل الانحدار المتعدد ، ولكن هذه المرة يحتوي عمود الحجم على قيم باللترات بدلاً من سم 3 (1.0 بدلاً من 1000).
الملف مخصص لأغراض الاختبار فقط ، يمكنك تنزيله من هنا: cars2.csv
السيارات | نموذج | الصوت | وزن | ثاني أكسيد الكربون |
تويوتا | Aygo | 1.0 | 790 | 99 |
ميتسوبيشي | نجمة الفضاء | 1.2 | 1160 | 95 |
سكودا | سيتيجو | 1.0 | 929 | 95 |
فيات | 500 | 0.9 | 865 | 90 |
ميني | كوبر | 1.5 | 1140 | 105 |
فولكس فاجن | فوق! | 1.0 | 929 | 105 |
سكودا | فابيا | 1.4 | 1109 | 90 |
مرسيدس | صف | 1.5 | 1365 | 92 |
معقل | العيد | 1.5 | 1112 | 98 |
أودي | أ 1 | 1.6 | 1150 | 99 |
هيونداي | أنا 20 | 1.1 | 980 | 99 |
سوزوكي | سويفت | 1.3 | 990 | 101 |
معقل | العيد | 1.0 | 1112 | 99 |
هوندا | سيفيك | 1.6 | 1252 | 94 |
هيونداي | I30 | 1.6 | 1326 | 97 |
أوبل | أسترا | 1.6 | 1330 | 97 |
بي ام دبليو | 1 | 1.6 | 1365 | 99 |
مازدا | 3 | 2.2 | 1280 | 104 |
سكودا | سريعون | 1.6 | 1119 | 104 |
معقل | ركز | 2.0 | 1328 | 105 |
معقل | مونديو | 1.6 | 1584 | 94 |
أوبل | شارة | 2.0 | 1428 | 99 |
مرسيدس | الفئة- C | 2.1 | 1365 | 99 |
سكودا | اوكتافيا | 1.6 | 1415 | 99 |
فولفو | S60 | 2.0 | 1415 | 99 |
مرسيدس | CLA | 1.5 | 1465 | 102 |
أودي | A4 | 2.0 | 1490 | 104 |
أودي | أ 6 | 2.0 | 1725 | 114 |
فولفو | V70 | 1.6 | 1523 | 109 |
بي ام دبليو | 5 | 2.0 | 1705 | 114 |
مرسيدس | الفئة- E | 2.1 | 1605 | 115 |
فولفو | اكس سي 70 | 2.0 | 1746 | 117 |
معقل | بي ماكس | 1.6 | 1235 | 104 |
بي ام دبليو | 2 | 1.6 | 1390 | 108 |
أوبل | زافيرا | 1.6 | 1405 | 109 |
مرسيدس | SLK | 2.5 | 1395 | 120 |
قد يكون من الصعب مقارنة الحجم 1.0 بالوزن 790 ، ولكن إذا قمنا بقياسهما إلى قيم قابلة للمقارنة ، فيمكننا بسهولة معرفة مقدار مقارنة إحدى القيمين بالقيمة الأخرى.
هناك طرق مختلفة لقياس البيانات ، في هذا البرنامج التعليمي سوف نستخدم طريقة تسمى التوحيد القياسي.
تستخدم طريقة التقييس هذه الصيغة:
z = (x - u) / s
أين z
هي القيمة الجديدة ،
x
هي القيمة الأصلية ،
u
هو المتوسط s
والانحراف المعياري.
إذا أخذت عمود الوزن من مجموعة البيانات أعلاه ، فإن القيمة الأولى هي 790 ، وستكون القيمة المقاسة:
(790 - ) / = -2.1
إذا أخذت عمود الحجم من مجموعة البيانات أعلاه ، فإن القيمة الأولى هي 1.0 ، والقيمة المقاسة ستكون:
(1.0 - ) / = -1.59
يمكنك الآن مقارنة -2.1 بـ -1.59 بدلاً من مقارنة 790 بـ 1.0.
لا يتعين عليك القيام بذلك يدويًا ، تحتوي وحدة Python sklearn النمطية على طريقة تسمى StandardScaler()
والتي تقوم بإرجاع كائن Scaler مع طرق لتحويل مجموعات البيانات.
مثال
قياس كل القيم في عمودي الوزن والحجم:
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)
نتيجة:
لاحظ أن القيمتين الأوليين هما -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]]
توقع قيم ثاني أكسيد الكربون
كانت المهمة في فصل الانحدار المتعدد هي التنبؤ بانبعاثات ثاني أكسيد الكربون من السيارة عندما تعرف وزنها وحجمها فقط.
عندما يتم قياس مجموعة البيانات ، سيتعين عليك استخدام المقياس عند توقع القيم:
مثال
توقع انبعاثات ثاني أكسيد الكربون من سيارة 1.3 لتر تزن 2300 كيلوجرام:
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)
نتيجة:
[107.2087328]