اختر نموذجًا
جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 52 من 58.
يمكن لعدة عائلات من النماذج تحديد أنواع البطاريق. أيها الأنسب؟ أعطِ كل نموذج المسارات نفسها والطيات نفسها، ثم قارن بينها، كما في نماذج النبيذ هذه:
يفوز أعلى متوسط. يشير الانحراف المعياري الصغير إلى أنه فاز في كل طية، وليس في تقسيم محظوظ واحد.
pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)تُدرِّب كل طية المسارات من جديد على جزء التدريب الخاص بها، لذا تظل كل درجة نزيهة. وتبقى طيور البطريق الاختبارية محجوبة.
التحدي
متوسطأربعة مرشحين يتنافسون على الوظيفة. يحتوي الكود التمهيدي على مساراتك وقائمتي names وmodels، ويقرأ عدد الطيات.
- لكل مرشح، أجرِ تحققًا متقاطعًا لخط الأنابيب الذي يتكوّن من
prepوذلك النموذج على صفوف التدريب. - اطبع المتوسط والانحراف المعياري، إلى 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())
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم الخاضع للإشراف
تدرّب بنفسك: مترجم Python عبر الإنترنت