تعويض القيم المفقودة ضمن مسار المعالجة
جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 47 من 58.
تحتوي السجلات الحقيقية على قيم مفقودة، وترفضها معظم النماذج. تملأ SimpleImputer كل قيمة مفقودة بمتوسط العمود أو وسيطه أو القيمة الأكثر شيوعًا فيه.
املأ القيم قبل التقسيم، فتساعد صفوف الاختبار في اختيار تلك القيمة: هذا تسرّب. سبعة أعماق للغوص وفجوة واحدة:
في مسار المعالجة، تتعلّم fit قيم التعويض من صفوف التدريب فقط:
from sklearn.impute import SimpleImputer
pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_) # القيم المستخدمة لملء البيانات المفقودة في الخطوة الأولىبالنسبة إلى سجل غوص (العمق، الدقائق، درجة حرارة الماء)، يطبع هذا:
[19. 44. 21.]وبالنسبة إلى الكلمات أيضًا، تصبح خطوات الأرقام مسارًا واحدًا في ColumnTransformer:
lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])التحدي
متوسطتتنبأ خدمة الغابات بأي ضربات البرق تتسبب في حرائق، لكن بعض القراءات مفقودة. يقسم البرنامج التمهيدي wildfire.csv ويقرأ استراتيجية، إما mean أو median.
- درّب مسارًا يتكون من مُعوِّض يستخدم تلك الاستراتيجية، ومُقيِّس، وانحدار لوجستي. اطبع دقته على بيانات الاختبار.
- لكل عمود، اطبع قيمة التعبئة في المسار، والقيمة التي ستنتجها جميع صفوف
X، مع التقريب إلى منزلة عشرية واحدة.
غابة أخرى، باستخدام median:
Test accuracy: 0.840
humidity_pct: fill 46.0, all rows would give 46.0
wind_kmh: fill 29.0, all rows would give 32.0
temp_c: fill 25.0, all rows would give 26.0
days_without_rain: fill 23.0, all rows would give 23.0حيثما اختلفت القيمتان، فإن التعبئة قبل التقسيم كانت ستسمح لصفوف الاختبار بالتأثير في بيانات التدريب.
جرّب بنفسك
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# صواعق البرق في غابة جافة: هل تسبب البرق في اندلاع حريق (1) أم لا (0)؟
# بعض قراءات الطقس مفقودة.
strikes = pd.read_csv("wildfire.csv")
columns = ["humidity_pct", "wind_kmh", "temp_c", "days_without_rain"]
X = strikes[columns]
y = strikes["fire"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
strategy = input()
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم الخاضع للإشراف
1نموذجك الأول
التعلّم من الأمثلةمجموعتا التدريب والاختبارالملاءمة والتنبؤتقييم النموذجمراجعة: فارز البذور10مسارات المعالجة
مسارات المعالجةالأعمدة المختلطةتعويض القيم المفقودة ضمن مسار المعالجةضبط مسار المعالجةمراجعة: تنظيف البيانات والتنبؤتدرّب بنفسك: مترجم Python عبر الإنترنت