.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/model_selection/plot_cv_indices.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. or to run this example in your browser via JupyterLite or Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_model_selection_plot_cv_indices.py: =========================================== تصور سلوك التحقق المتقاطع في سكايلرن =========================================== يعد اختيار كائن التحقق المتقاطع المناسب جزءًا حاسمًا من ملاءمة النموذج بشكل صحيح. هناك العديد من الطرق لتقسيم البيانات إلى مجموعات تدريب واختبار لتجنب الإفراط في تناسب النموذج، وتوحيد عدد المجموعات في مجموعات الاختبار، وما إلى ذلك. يوضح هذا المثال سلوك العديد من كائنات سكايلرن الشائعة للمقارنة. .. GENERATED FROM PYTHON SOURCE LINES 11-35 .. code-block:: Python # المؤلفون: مطوري سكايلرن # معرف SPDX-License: BSD-3-Clause import matplotlib.pyplot as plt import numpy as np from matplotlib.patches import Patch from sklearn.model_selection import ( GroupKFold, GroupShuffleSplit, KFold, ShuffleSplit, StratifiedGroupKFold, StratifiedKFold, StratifiedShuffleSplit, TimeSeriesSplit, ) rng = np.random.RandomState(1338) cmap_data = plt.cm.Paired cmap_cv = plt.cm.coolwarm n_splits = 4 .. GENERATED FROM PYTHON SOURCE LINES 36-47 تصور بياناتنا ------------------ أولاً، يجب أن نفهم بنية بياناتنا. يحتوي على 100 نقطة بيانات إدخال تم إنشاؤها عشوائيًا، و3 فئات مقسمة بشكل غير متساوٍ عبر نقاط البيانات، و10 "مجموعات" مقسمة بالتساوي عبر نقاط البيانات. كما سنرى، فإن بعض كائنات التحقق المتقاطع تقوم بأشياء محددة مع البيانات المسمى، والبعض الآخر يتصرف بشكل مختلف مع البيانات المجمعة، والبعض الآخر لا تستخدم هذه المعلومات. للبدء، سنقوم بتصور بياناتنا. .. GENERATED FROM PYTHON SOURCE LINES 47-89 .. code-block:: Python # توليد بيانات الفئة/المجموعة n_points = 100 X = rng.randn(100, 10) percentiles_classes = [0.1, 0.3, 0.6] y = np.hstack([[ii] * int(100 * perc) for ii, perc in enumerate(percentiles_classes)]) # توليد مجموعات غير متساوية group_prior = rng.dirichlet([2] * 10) groups = np.repeat(np.arange(10), rng.multinomial(100, group_prior)) def visualize_groups(classes, groups, name): # تصور مجموعات مجموعة البيانات fig, ax = plt.subplots() ax.scatter( range(len(groups)), [0.5] * len(groups), c=groups, marker="_", lw=50, cmap=cmap_data, ) ax.scatter( range(len(groups)), [3.5] * len(groups), c=classes, marker="_", lw=50, cmap=cmap_data, ) ax.set( ylim=[-1, 5], yticks=[0.5, 3.5], yticklabels=["Data\ngroup", "Data\nclass"], xlabel="Sample index", ) visualize_groups(y, groups, "no groups") .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_001.png :alt: plot cv indices :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 90-96 تحديد وظيفة لتصور سلوك التحقق المتقاطع -------------------------------------------------------- سنقوم بتعريف وظيفة تسمح لنا بتصور سلوك كل كائن تحقق متقاطع. سنقوم بأداء 4 انقسامات للبيانات. في كل تقسيم، سنقوم بتصور المؤشرات المختارة لمجموعة التدريب (باللون الأزرق) ومجموعة الاختبار (باللون الأحمر). .. GENERATED FROM PYTHON SOURCE LINES 96-144 .. code-block:: Python def plot_cv_indices(cv, X, y, group, ax, n_splits, lw=10): """إنشاء رسم بياني عينة لمؤشرات كائن التحقق المتقاطع.""" use_groups = "Group" in type(cv).__name__ groups = group if use_groups else None # توليد التصورات التدريب/الاختبار لكل تقسيم CV for ii, (tr, tt) in enumerate(cv.split(X=X, y=y, groups=groups)): # ملء المؤشرات بمجموعات التدريب/الاختبار indices = np.array([np.nan] * len(X)) indices[tt] = 1 indices[tr] = 0 # تصور النتائج ax.scatter( range(len(indices)), [ii + 0.5] * len(indices), c=indices, marker="_", lw=lw, cmap=cmap_cv, vmin=-0.2, vmax=1.2, ) # رسم فئات البيانات والمجموعات في النهاية ax.scatter( range(len(X)), [ii + 1.5] * len(X), c=y, marker="_", lw=lw, cmap=cmap_data ) ax.scatter( range(len(X)), [ii + 2.5] * len(X), c=group, marker="_", lw=lw, cmap=cmap_data ) # التنسيق yticklabels = list(range(n_splits)) + ["class", "group"] ax.set( yticks=np.arange(n_splits + 2) + 0.5, yticklabels=yticklabels, xlabel="Sample index", ylabel="CV iteration", ylim=[n_splits + 2.2, -0.2], xlim=[0, 100], ) ax.set_title("{}".format(type(cv).__name__), fontsize=15) return ax .. GENERATED FROM PYTHON SOURCE LINES 145-147 دعونا نرى كيف يبدو الأمر بالنسبة لكائن :class:`~sklearn.model_selection.KFold` كائن التحقق المتقاطع: .. GENERATED FROM PYTHON SOURCE LINES 147-152 .. code-block:: Python fig, ax = plt.subplots() cv = KFold(n_splits) plot_cv_indices(cv, X, y, groups, ax, n_splits) .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_002.png :alt: KFold :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 153-161 كما ترى، بشكل افتراضي، لا يأخذ منشئ التقسيم المتقاطع KFold في الاعتبار فئة نقطة البيانات أو المجموعة. يمكننا تغيير هذا باستخدام أي مما يلي: - ``StratifiedKFold`` للحفاظ على نسبة العينات لكل فئة. - ``GroupKFold`` لضمان عدم ظهور نفس المجموعة في طيتين مختلفتين. - ``StratifiedGroupKFold`` للحفاظ على قيد ``GroupKFold`` مع محاولة إرجاع الطيات المفهرسة. .. GENERATED FROM PYTHON SOURCE LINES 161-175 .. code-block:: Python cvs = [StratifiedKFold, GroupKFold, StratifiedGroupKFold] for cv in cvs: fig, ax = plt.subplots(figsize=(6, 3)) plot_cv_indices(cv(n_splits), X, y, groups, ax, n_splits) ax.legend( [Patch(color=cmap_cv(0.8)), Patch(color=cmap_cv(0.02))], ["Testing set", "Training set"], loc=(1.02, 0.8), ) # ضبط الأسطورة plt.tight_layout() fig.subplots_adjust(right=0.7) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_003.png :alt: StratifiedKFold :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_003.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_004.png :alt: GroupKFold :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_004.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_005.png :alt: StratifiedGroupKFold :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_005.png :class: sphx-glr-multi-img .. GENERATED FROM PYTHON SOURCE LINES 176-186 بعد ذلك، سنقوم بتصور هذا السلوك لعدد من مؤشرات CV. تصور مؤشرات التحقق المتقاطع للعديد من كائنات CV ------------------------------------------------------ دعونا نقارن بصريًا سلوك التحقق المتقاطع للعديد من كائنات التحقق المتقاطع في سكايلرن. أدناه، سنقوم بالحلقة عبر العديد من كائنات التحقق المتقاطع الشائعة، وتصوير سلوك كل منها. لاحظ كيف يستخدم البعض معلومات المجموعة/الفئة بينما لا يستخدمها الآخرون. .. GENERATED FROM PYTHON SOURCE LINES 186-212 .. code-block:: Python cvs = [ KFold, GroupKFold, ShuffleSplit, StratifiedKFold, StratifiedGroupKFold, GroupShuffleSplit, StratifiedShuffleSplit, TimeSeriesSplit, ] for cv in cvs: this_cv = cv(n_splits=n_splits) fig, ax = plt.subplots(figsize=(6, 3)) plot_cv_indices(this_cv, X, y, groups, ax, n_splits) ax.legend( [Patch(color=cmap_cv(0.8)), Patch(color=cmap_cv(0.02))], ["Testing set", "Training set"], loc=(1.02, 0.8), ) # ضبط الأسطورة plt.tight_layout() fig.subplots_adjust(right=0.7) plt.show() .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_006.png :alt: KFold :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_006.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_007.png :alt: GroupKFold :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_007.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_008.png :alt: ShuffleSplit :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_008.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_009.png :alt: StratifiedKFold :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_009.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_010.png :alt: StratifiedGroupKFold :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_010.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_011.png :alt: GroupShuffleSplit :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_011.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_012.png :alt: StratifiedShuffleSplit :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_012.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_013.png :alt: TimeSeriesSplit :srcset: /auto_examples/model_selection/images/sphx_glr_plot_cv_indices_013.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.688 seconds) .. _sphx_glr_download_auto_examples_model_selection_plot_cv_indices.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/scikit-learn/scikit-learn/main?urlpath=lab/tree/notebooks/auto_examples/model_selection/plot_cv_indices.ipynb :alt: Launch binder :width: 150 px .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../lite/lab/index.html?path=auto_examples/model_selection/plot_cv_indices.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_cv_indices.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_cv_indices.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_cv_indices.zip ` .. include:: plot_cv_indices.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_