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

اختر نموذجًا

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

يمكن لعدة عائلات من النماذج تحديد أنواع البطاريق. أيها الأنسب؟ أعطِ كل نموذج المسارات نفسها والطيات نفسها، ثم قارن بينها، كما في نماذج النبيذ هذه:

دقة الطيات الخمس لكل نموذج مرشح على بيانات النبيذ، ممثلة بنقاط، مع شريط أسود عند متوسط كل نموذج: الانحدار اللوجستي هو الأعلى والأكثر اتساقًا عند 0.970، وk-NN عند 0.940، والشجرة هي الأقل عند 0.896 مع طية واحدة هبطت إلى 0.78

يفوز أعلى متوسط. يشير الانحراف المعياري الصغير إلى أنه فاز في كل طية، وليس في تقسيم محظوظ واحد.

pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)

تُدرِّب كل طية المسارات من جديد على جزء التدريب الخاص بها، لذا تظل كل درجة نزيهة. وتبقى طيور البطريق الاختبارية محجوبة.

challenge icon

التحدي

متوسط

أربعة مرشحين يتنافسون على الوظيفة. يحتوي الكود التمهيدي على مساراتك وقائمتي names وmodels، ويقرأ عدد الطيات.

  1. لكل مرشح، أجرِ تحققًا متقاطعًا لخط الأنابيب الذي يتكوّن من prep وذلك النموذج على صفوف التدريب.
  2. اطبع المتوسط والانحراف المعياري، إلى 3 منازل عشرية.
  3. اطبع الفائز: صاحب أعلى متوسط.

لمستعمرة أخرى و5 طيات:

k-NN: mean 0.951, std 0.031
Logistic regression: mean 0.964, std 0.012
Random forest: mean 0.958, std 0.027
Decision tree: mean 0.902, std 0.048
Winner: Logistic regression

جرّب بنفسك

import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier

# مستعمرة البطاريق من درس «تعرّف على البطاريق»، وخصائصها وتسميتها
penguins = pd.read_csv("penguins.csv")
numbers = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
text = ["island", "sex"]
X = penguins[numbers + text]
y = penguins["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify=y, random_state=0)

# من درس «جهّز البيانات»: المساران
number_steps = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
text_steps = make_pipeline(SimpleImputer(strategy="constant", fill_value="unknown"), OneHotEncoder())
prep = ColumnTransformer([("numbers", number_steps, numbers), ("words", text_steps, text)])

# النماذج المرشّحة
names = ["k-NN", "Logistic regression", "Random forest", "Decision tree"]
models = [KNeighborsClassifier(), LogisticRegression(max_iter=1000),
          RandomForestClassifier(n_estimators=100, random_state=0), DecisionTreeClassifier(random_state=0)]
folds = int(input())

# اكتب شيفرتك أدناه
quiz iconاختبر نفسك

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

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

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