قياس الأخطاء
جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 13 من 58.
ما مقدار خطأ النموذج بالدولارات؟ إليك نموذجًا لأسعار المنازل على خمسة منازل اختبار لم يرها من قبل:
تقيس sklearn.metrics الأخطاء نيابةً عنك:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
y_test = np.array([290, 410, 235, 520, 330]) # آلاف الدولارات
pred = np.array([270, 450, 245, 430, 360])
print(mean_absolute_error(y_test, pred))
print(np.round(np.sqrt(mean_squared_error(y_test, pred)), 1))
print(np.round(r2_score(y_test, pred), 3))يطبع هذا:
38.0
47.1
0.776يمثل MAE، أي متوسط الخطأ المطلق، مقدار الخطأ المعتاد: 38 ألفًا. أما RMSE فيربّع الأخطاء، ثم يحسب متوسطها، ثم يأخذ الجذر: فيرفع خطأ كبير واحد القيمة إلى 47.
كلاهما يُعبّر بوحدات المتغير المستهدف. r2_score هو معامل التحديد R تربيع: يفسّر 78% من تباين الأسعار.
التحدي
متوسطيُسعّر متجرٌ الكاميرات المستعملة باستخدام نموذج. هل تساعد ميزة إضافية؟ يقرأ البرنامج shutter_k (آلاف الصور الملتقطة) أو megapixels. يدرّب البرنامج التمهيدي نموذجين، أحدهما على age_years وحده والآخر معه الميزة الإضافية، مع الاحتفاظ بتنبؤاتهما للاختبار في preds.
- لكل نموذج، اطبع MAE وRMSE (بمنزلة عشرية واحدة) وR squared (بثلاث منازل عشرية).
- اطبع النموذج ذي MAE الأصغر.
لمتجر آخر ومع shutter_k:
age_years: MAE 212.4, RMSE 268.1, R squared 0.853
age_years + shutter_k: MAE 98.7, RMSE 121.0, R squared 0.97
Better: age_years + shutter_k, off by 98.7 dollars on a typical cameraجرّب بنفسك
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# صف واحد لكل كاميرا مباعة: العمر، وعدد مرات تشغيل الغالق بالآلاف، وعدد الميغابكسلات، والسعر بالدولار
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# قسّم الصفوف كاملةً؛ يختار كل نموذج أدناه أعمدته الخاصة
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# نموذج واحد لكل قائمة أعمدة، مع تنبؤاته لكاميرات الاختبار
preds = []
for cols in columns:
model = LinearRegression()
model.fit(X_train[cols], y_train)
preds.append(model.predict(X_test[cols]))
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم الخاضع للإشراف
تدرّب بنفسك: مترجم Python عبر الإنترنت