واجهة scikit-learn: fit وtransform وpredict
افهم واجهة المقدّر وسير عمل تقسيم بيانات التدريب والاختبار
واجهة scikit-learn: fit وtransform وpredict درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
ما هو scikit-learn؟
scikit-learn هي مكتبة Python الأساسية للتعلم الآلي التقليدي. وتوفّر واجهة API متسقة: إذ يملك كل مقدّر fit()، بينما يملك معظمها predict() أو transform().
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1],[2],[3],[4],[5]])
y = np.array([2, 4, 6, 8, 10])
model = LinearRegression().fit(X, y)
print(model.predict([[6]])) # [12.]تقسيم بيانات التدريب والاختبار
قسّم البيانات دائمًا قبل التدريب لتقييم مدى تعميم النموذج على بيانات لم يرها من قبل.
from sklearn.model_selection import train_test_split
import numpy as np
X = np.random.rand(100, 5)
y = (X[:,0] > 0.5).astype(int)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
print(X_train.shape, X_test.shape) # (80,5) (20,5)fit() — التدريب
يدرّب estimator.fit(X, y) النموذج على X (الميزات) وy (التسميات). وفي الأساليب غير الخاضعة للإشراف، يُمرَّر X فقط.
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=200, random_state=0)
model = LogisticRegression()
model.fit(X, y)
print("Trained:", model.classes_)predict() وpredict_proba()
تعيد predict(X) تسميات الفئات، بينما تعيد predict_proba(X) احتمالات الفئات للمصنّفات.
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(random_state=0)
model = LogisticRegression().fit(X, y)
print(model.predict(X[:5])) # [0 1 0 ...]
print(model.predict_proba(X[:2])) # [[0.7 0.3] ...]المحوّلات: fit وtransform
تحتوي المحوّلات (مثل أدوات القياس والمشفّرات) على fit(X) + transform(X). نفّذ الملاءمة دائمًا على بيانات التدريب فقط، ثم حوّل بيانات التدريب والاختبار معًا.
from sklearn.preprocessing import StandardScaler
import numpy as np
X_train = np.array([[1,2],[3,4],[5,6]])
X_test = np.array([[2,3],[4,5]])
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train) # fit + transform
X_test_s = scaler.transform(X_test) # transform only (using train stats)Pipeline
يربط Pipeline المحوّلات والمقدّر في كائن واحد. ويمنع تسرّب البيانات من خلال تطبيق التحويلات داخل التحقق المتقاطع بطريقة صحيحة.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = Pipeline([
("scaler", StandardScaler()),
("clf", SVC())
])
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))الدقة والمقاييس الأخرى
استخدم accuracy_score وf1_score وclassification_report لتقييم المصنّفات.
from sklearn.metrics import accuracy_score, classification_report
y_pred = model.predict(X_test)
print(accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))التحقق المتقاطع
يقيّم cross_val_score النموذج باستخدام التحقق المتقاطع k-fold من دون الحاجة إلى تقسيم البيانات يدويًا.
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(random_state=0)
scores = cross_val_score(LogisticRegression(), X, y, cv=5)
print(f"CV scores: {scores.mean():.3f} ± {scores.std():.3f}")ضبط المعلمات الفائقة باستخدام GridSearchCV
يبحث GridSearchCV بحثًا شاملًا في شبكة من المعلمات باستخدام التحقق المتقاطع للعثور على أفضل المعلمات الفائقة.
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import make_classification
X, y = make_classification(random_state=0)
param_grid = {"C": [0.1, 1, 10], "kernel": ["rbf", "linear"]}
gs = GridSearchCV(SVC(), param_grid, cv=5)
gs.fit(X, y)
print(gs.best_params_, gs.best_score_)المعالجة المسبقة: LabelEncoder وOneHotEncoder
شفّر التسميات الفئوية باستخدام LabelEncoder، والميزات الفئوية باستخدام OneHotEncoder أو ColumnTransformer.
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
import numpy as np
le = LabelEncoder()
print(le.fit_transform(["cat","dog","cat","fish"])) # [0 1 0 2]
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"],["green"],["blue"]]))حفظ النماذج وتحميلها
احفظ النماذج المدرَّبة باستخدام joblib، فهو أسرع من pickle عند التعامل مع مصفوفات NumPy.
import joblib
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(random_state=0)
model = LogisticRegression().fit(X, y)
joblib.dump(model, "model.joblib")
loaded = joblib.load("model.joblib")
print(loaded.predict(X[:3]))تحقق سريع
لماذا ينبغي استدعاء scaler.fit() على بيانات التدريب فقط، وليس على بيانات الاختبار؟
مراجعة
توفّر scikit-learn واجهة API موحّدة: إذ يدرّب fit() النموذج، ويستنتج predict() النتائج، ويجري transform() المعالجة المسبقة. استخدم Pipeline لربط الخطوات. قسّم البيانات باستخدام train_test_split، وقيّم النموذج باستخدام cross_val_score، واضبط المعلمات باستخدام GridSearchCV.
الأسئلة الشائعة
هل درس «واجهة scikit-learn: fit وtransform وpredict» مجاني؟
نعم — نص درس «واجهة scikit-learn: fit وtransform وpredict» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «واجهة scikit-learn: fit وtransform وpredict»؟
افهم واجهة المقدّر وسير عمل تقسيم بيانات التدريب والاختبار تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «واجهة scikit-learn: fit وtransform وpredict»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- واجهة scikit-learn: fit وtransform وpredict
- النماذج الخطية: الانحدار والتصنيف
- النماذج القائمة على الأشجار: أشجار القرار والغابات العشوائية
- تقييم النماذج والتحقق المتقاطع