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

البحث الشبكي

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

يعني الضبط اليدوي وجود حلقات متداخلة. تقوم GridSearchCV بالتحقق المتقاطع من كل تركيبة من الإعدادات وتحتفظ بالأفضل. بالنسبة إلى 300 رحلة بالترام، سواء كانت متأخرة أو في الموعد المحدد:

شبكة 3 × 3 لمتوسطات الدقة: أعماق الشجرة 2 و4 و6 على الجانب، وأقل عدد من الصفوف لكل ورقة 1 و5 و20 عبر الأعلى. أفضل خلية، العمق 4 مع الورقة 5، تسجل 0.876 وهي مؤطرة

يربط القاموس كل إعداد بالقيم التي ينبغي تجربتها. تمثّل min_samples_leaf أقل عدد من الصفوف التي يمكن أن تحتوي عليها الورقة:

from sklearn.model_selection import GridSearchCV

grid = {"max_depth": [2, 4, 6], "min_samples_leaf": [1, 5, 20]}
search = GridSearchCV(DecisionTreeClassifier(random_state=0), grid, cv=5)
search.fit(X_train, y_train)
print(search.best_params_)
print(f"{search.best_score_:.3f}")
print(f"{search.score(X_test, y_test):.3f}")

يطبع هذا:

{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813

تعيد عملية البحث ملاءمة الخيار الفائز على جميع صفوف التدريب، لذا تختبره search.score مرة واحدة. اجعل الشبكات صغيرة: تكلّف كل خلية 5 عمليات ملاءمة.

challenge icon

التحدي

متوسط

يصنّف فريق الأقمار الصناعية البكسلات على أنها سحب أو سماء صافية باستخدام k-NN. يقرأ البرنامج أكبر قيمة لـ k لتجربتها؛ ويقسّم البرنامج التمهيدي البيانات.

  1. ابحث شبكيًا عن كل قيمة فردية لـ k من 1 إلى ذلك العدد، باستخدام weights "uniform" أو "distance" (تُحسب الجيران الأقرب بأوزان أكبر)، وcv=5.
  2. اطبع أفضل الإعدادات، ودقتها المتحقَّق منها تقاطعيًا، ودقة الاختبار، مع 3 منازل عشرية.

لبكسلات أخرى ومع 7:

Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800

جرّب بنفسك

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier

max_k = int(input())

# لا تغيّر الأسطر أدناه: 360 بكسلًا من صور الأقمار الصناعية، لكل منها 4 قراءات ضوئية؛ التصنيف 1 يعني وجود سحابة
X, y = make_classification(n_samples=360, n_features=4, n_informative=3, n_redundant=0,
                           flip_y=0.08, class_sep=0.7, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

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

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

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

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