Menu
CoddyTech
flag Ar iconالعربيةdown icon

مسارات المعالجة

جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 45 من 58.

تأتي الجداول الحقيقية بفجوات وكلمات ومقاييس مختلفة. يبني هذا الفصل كائنًا واحدًا ينظّفها ويتنبأ بها، وهو مسار معالجة:

مخطط بعنوان: أعمدة خام تدخل، وتنبؤات تخرج. تسير الأرقام ذات الفجوات في مسار، حيث تملأ SimpleImputer الفجوات، ثم يأتي StandardScaler. وتسير الكلمات في مسار آخر، حيث يحولها OneHotEncoder إلى أصفار وآحاد. يلتقي المساران عند النموذج. يحيط مربع متقطع بالخطوات، وتظهر فيه العبارة: مسار معالجة واحد: درّبه، ثم تنبأ

ابدأ بخطوات صغيرة: تقوم make_pipeline بربط أداة تحجيم ونموذج:

from sklearn.pipeline import make_pipeline

pipe = make_pipeline(StandardScaler(), KNeighborsClassifier())
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))

بالنسبة إلى 200 عملية لحام اختبارية، قوية أو ضعيفة، يطبع هذا 0.86، مقارنةً بـ 0.74 دون تحجيم.

تتعلّم fit كيفية التحجيم من صفوف التدريب، ثم تُدرّب النموذج. ويُحجَّم كل صف لاحق بالطريقة نفسها تلقائيًا.

challenge icon

التحدي

متوسط

تقرر شركة بالونات كل مساء ما إذا كان الغد يومًا للطيران. يطبّق البرنامج المبدئي التحجيم يدويًا: دقة الاختبار جيدة، لكن التوقعات لا تُحوَّل أبدًا إلى المقياس نفسه، لذا يقول yes مهما كان الطقس.

  1. استبدله بخط معالجة يتضمن مُقياسًا ثم خوارزمية k-NN، ودرّبه على صفوف التدريب.
  2. اطبع دقته على الاختبار واحكم على التوقع باستخدامه.

شركة أخرى، اليوم 20، 32، 7000، 9:

Test accuracy: 0.880
Flying day: no

جرّب بنفسك

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline

# أيام سابقة في شركة مناطيد: يوم مناسب للطيران (1) أو غير مناسب (0)
days = pd.read_csv("balloons.csv")
X = days[["wind_kmh", "gusts_kmh", "visibility_m", "passengers"]].to_numpy()
y = days["flying_day"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# توقعات الغد: سرعة الرياح، هبّات الرياح، مدى الرؤية، الركاب الذين حجزوا
day = np.array([[float(input()), float(input()), float(input()), float(input())]])

# تحجيم البيانات يدويًا: تبدو النتيجة جيدة، لكن بيانات التوقعات لا تخضع للتحجيم مطلقًا
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_scaled, y_train)
print(f"Test accuracy: {model.score(X_test_scaled, y_test):.3f}")
if model.predict(day)[0] == 1:
    print("Flying day: yes")
else:
    print("Flying day: no")
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التعلّم الخاضع للإشراف

تدرّب بنفسك: مترجم Python عبر الإنترنت