التعلم الآلي - الانحدار المتعدد
الانحدار المتعدد
الانحدار المتعدد يشبه الانحدار الخطي ، ولكن مع أكثر من قيمة مستقلة ، مما يعني أننا نحاول التنبؤ بقيمة بناءً على متغيرين أو أكثر .
ألق نظرة على مجموعة البيانات أدناه ، فهي تحتوي على بعض المعلومات حول السيارات.
السيارات | نموذج | الصوت | وزن | ثاني أكسيد الكربون |
تويوتا | Aygo | 1000 | 790 | 99 |
ميتسوبيشي | نجمة الفضاء | 1200 | 1160 | 95 |
سكودا | سيتيجو | 1000 | 929 | 95 |
فيات | 500 | 900 | 865 | 90 |
ميني | كوبر | 1500 | 1140 | 105 |
فولكس فاجن | فوق! | 1000 | 929 | 105 |
سكودا | فابيا | 1400 | 1109 | 90 |
مرسيدس | صف | 1500 | 1365 | 92 |
معقل | العيد | 1500 | 1112 | 98 |
أودي | أ 1 | 1600 | 1150 | 99 |
هيونداي | أنا 20 | 1100 | 980 | 99 |
سوزوكي | سويفت | 1300 | 990 | 101 |
معقل | العيد | 1000 | 1112 | 99 |
هوندا | سيفيك | 1600 | 1252 | 94 |
هيونداي | I30 | 1600 | 1326 | 97 |
أوبل | أسترا | 1600 | 1330 | 97 |
بي ام دبليو | 1 | 1600 | 1365 | 99 |
مازدا | 3 | 2200 | 1280 | 104 |
سكودا | سريعون | 1600 | 1119 | 104 |
معقل | ركز | 2000 | 1328 | 105 |
معقل | مونديو | 1600 | 1584 | 94 |
أوبل | شارة | 2000 | 1428 | 99 |
مرسيدس | الفئة- C | 2100 | 1365 | 99 |
سكودا | اوكتافيا | 1600 | 1415 | 99 |
فولفو | S60 | 2000 | 1415 | 99 |
مرسيدس | CLA | 1500 | 1465 | 102 |
أودي | A4 | 2000 | 1490 | 104 |
أودي | أ 6 | 2000 | 1725 | 114 |
فولفو | V70 | 1600 | 1523 | 109 |
بي ام دبليو | 5 | 2000 | 1705 | 114 |
مرسيدس | الفئة- E | 2100 | 1605 | 115 |
فولفو | اكس سي 70 | 2000 | 1746 | 117 |
معقل | بي ماكس | 1600 | 1235 | 104 |
بي ام دبليو | 2 | 1600 | 1390 | 108 |
أوبل | زافيرا | 1600 | 1405 | 109 |
مرسيدس | SLK | 2500 | 1395 | 120 |
يمكننا التنبؤ بانبعاث ثاني أكسيد الكربون للسيارة بناءً على حجم المحرك ، ولكن مع الانحدار المتعدد يمكننا طرح المزيد من المتغيرات ، مثل وزن السيارة ، لجعل التنبؤ أكثر دقة.
كيف يعمل؟
في Python ، لدينا وحدات ستؤدي العمل نيابةً عنا. ابدأ باستيراد وحدة الباندا.
import pandas
تعرف على وحدة Pandas في برنامج Pandas التعليمي الخاص بنا .
تسمح لنا وحدة Pandas بقراءة ملفات csv وإرجاع كائن DataFrame.
الملف مخصص لأغراض الاختبار فقط ، يمكنك تنزيله من هنا: cars.csv
df = pandas.read_csv("cars.csv")
ثم قم بعمل قائمة بالقيم المستقلة واستدع هذا المتغير X
.
ضع القيم التابعة في متغير يسمى y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
نصيحة: من الشائع تسمية قائمة القيم المستقلة بأحرف كبيرة X ، وقائمة القيم التابعة ذات الحالة الصغيرة y.
سنستخدم بعض الطرق من الوحدة النمطية sklearn ، لذلك سيتعين علينا استيراد هذه الوحدة أيضًا:
from sklearn import linear_model
من الوحدة النمطية sklearn سوف نستخدم LinearRegression()
الطريقة لإنشاء كائن انحدار خطي.
يحتوي هذا الكائن على طريقة تسمى fit()
تأخذ القيم المستقلة والتابعة كمعلمات وتعبئ كائن الانحدار بالبيانات التي تصف العلاقة:
regr = linear_model.LinearRegression()
regr.fit(X, y)
الآن لدينا كائن انحدار جاهز للتنبؤ بقيم ثاني أكسيد الكربون بناءً على وزن السيارة وحجمها:
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
مثال
شاهد المثال الكامل في العمل:
import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr =
linear_model.LinearRegression()
regr.fit(X, y)
#predict the CO2
emission of a car where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)
نتيجة:
[107.2087328]
لقد توقعنا أن سيارة بمحرك 1.3 لتر ، ووزنها 2300 كجم ، ستطلق حوالي 107 جرامًا من ثاني أكسيد الكربون لكل كيلومتر تقوده.
معامل في الرياضيات او درجة
المعامل هو العامل الذي يصف العلاقة مع متغير غير معروف.
مثال: إذا كان x
متغيرًا ، فعندئذ
2x
يكون x
مرتين. x
هو المتغير غير المعروف ، والرقم 2
هو المعامل.
في هذه الحالة ، يمكننا أن نطلب قيمة معامل الوزن مقابل ثاني أكسيد الكربون ، والحجم مقابل ثاني أكسيد الكربون. تخبرنا الإجابة (الإجابات) التي نحصل عليها بما سيحدث إذا قمنا بزيادة أو تقليل إحدى القيم المستقلة.
مثال
اطبع قيم معامل كائن الانحدار:
import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr =
linear_model.LinearRegression()
regr.fit(X, y)
print(regr.coef_)
نتيجة:
[0.00755095 0.00780526]
وأوضح النتيجة
تمثل المصفوفة الناتجة قيم المعامل للوزن والحجم.
الوزن: 0.00755095
الحجم: 0.00780526
تخبرنا هذه القيم أنه إذا زاد الوزن بمقدار 1 كجم ، فإن انبعاثات ثاني أكسيد الكربون تزيد بمقدار 0.00755095 جم.
وإذا زاد حجم المحرك (الحجم) بمقدار 1 سم 3 ، فإن انبعاثات ثاني أكسيد الكربون تزيد بمقدار 0.00780526 جم.
أعتقد أن هذا تخمين عادل ، لكن دعنا نختبره!
لقد توقعنا بالفعل أنه إذا كانت سيارة بمحرك 1300 سم 3 تزن 2300 كجم ، فإن انبعاثات ثاني أكسيد الكربون ستكون حوالي 107 جرام.
ماذا لو زدنا الوزن بـ 1000 كجم؟
مثال
انسخ المثال السابق ، ولكن قم بتغيير الوزن من 2300 إلى 3300:
import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr =
linear_model.LinearRegression()
regr.fit(X, y)
predictedCO2 = regr.predict([[3300, 1300]])
print(predictedCO2)
نتيجة:
[114.75968007]
لقد توقعنا أن سيارة بمحرك 1.3 لتر ، ووزنها 3300 كجم ، ستطلق ما يقرب من 115 جرامًا من ثاني أكسيد الكربون لكل كيلومتر تقوده.
مما يدل على صحة المعامل 0.00755095:
107.2087328 + (1000 * 0.00755095) = 114.75968