.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/model_selection/plot_permutation_tests_for_classification.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_permutation_tests_for_classification.py: " ================================================================= اختبار مع التبديلات أهمية درجة التصنيف ================================================================= هذا المثال يوضح استخدام :func:`~sklearn.model_selection.permutation_test_score` لتقييم أهمية درجة التصنيف المتقاطعة باستخدام التبديلات. .. GENERATED FROM PYTHON SOURCE LINES 11-15 .. code-block:: Python # المؤلفون: مطوري سكايلرن # معرف الترخيص: BSD-3-Clause .. GENERATED FROM PYTHON SOURCE LINES 16-21 مجموعة البيانات ------- سنستخدم :ref:`iris_dataset`، والتي تتكون من قياسات مأخوذة من 3 أنواع من زهرة السوسن. .. GENERATED FROM PYTHON SOURCE LINES 21-28 .. code-block:: Python from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target .. GENERATED FROM PYTHON SOURCE LINES 29-31 سنقوم أيضًا بتوليد بعض بيانات الميزات العشوائية (أي 20 ميزة)، غير مرتبطة بعلامات الفئات في مجموعة بيانات السوسن. .. GENERATED FROM PYTHON SOURCE LINES 31-39 .. code-block:: Python import numpy as np n_uncorrelated_features = 20 rng = np.random.RandomState(seed=0) # استخدم نفس عدد العينات كما في iris و20 ميزة X_rand = rng.normal(size=(X.shape[0], n_uncorrelated_features)) .. GENERATED FROM PYTHON SOURCE LINES 40-58 درجة اختبار التبديل ---------------------- بعد ذلك، نقوم بحساب :func:`~sklearn.model_selection.permutation_test_score` باستخدام مجموعة بيانات السوسن الأصلية، والتي تتنبأ بالعلامات بقوة والميزات العشوائية وعلامات السوسن، والتي يجب أن لا يكون لها أي اعتماد بين الميزات والعلامات. نستخدم :class:`~sklearn.svm.SVC` المصنف و:ref:`accuracy_score` لتقييم النموذج في كل جولة. :func:`~sklearn.model_selection.permutation_test_score` يولد توزيع صفري من خلال حساب دقة المصنف على 1000 تبديلات مختلفة لمجموعة البيانات، حيث تظل الميزات كما هي ولكن تخضع العلامات لتبديلات مختلفة. هذا هو التوزيع لفرضية العدم التي تنص على عدم وجود اعتماد بين الميزات والعلامات. يتم حساب قيمة p التجريبية بعد ذلك كنسبة مئوية من التبديلات التي تكون فيها الدرجة المحصلة أكبر من الدرجة المحصلة باستخدام البيانات الأصلية. .. GENERATED FROM PYTHON SOURCE LINES 58-73 .. code-block:: Python from sklearn.model_selection import StratifiedKFold, permutation_test_score from sklearn.svm import SVC clf = SVC(kernel="linear", random_state=7) cv = StratifiedKFold(2, shuffle=True, random_state=0) score_iris, perm_scores_iris, pvalue_iris = permutation_test_score( clf, X, y, scoring="accuracy", cv=cv, n_permutations=1000 ) score_rand, perm_scores_rand, pvalue_rand = permutation_test_score( clf, X_rand, y, scoring="accuracy", cv=cv, n_permutations=1000 ) .. GENERATED FROM PYTHON SOURCE LINES 74-84 البيانات الأصلية ^^^^^^^^^^^^^ أدناه نرسم مخططًا لتوزيع درجات التبديل (التوزيع الصفري). يشير الخط الأحمر إلى الدرجة التي حصل عليها المصنف على البيانات الأصلية. الدرجة أفضل بكثير من تلك التي تم الحصول عليها عن طريق استخدام البيانات المبدلة وقيمة p منخفضة جدًا. هذا يشير إلى أن هناك احتمالًا ضئيلًا للحصول على هذه الدرجة الجيدة عن طريق الصدفة وحدها. إنه يقدم دليلًا على أن مجموعة بيانات السوسن تحتوي على اعتماد حقيقي بين الميزات والعلامات وتمكن المصنف من استخدام هذا للحصول على نتائج جيدة. .. GENERATED FROM PYTHON SOURCE LINES 84-96 .. code-block:: Python import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.hist(perm_scores_iris, bins=20, density=True) ax.axvline(score_iris, ls="--", color="r") score_label = f"Score on original\ndata: {score_iris:.2f}\n(p-value: {pvalue_iris:.3f})" ax.text(0.7, 10, score_label, fontsize=12) ax.set_xlabel("Accuracy score") _ = ax.set_ylabel("Probability density") .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_permutation_tests_for_classification_001.png :alt: plot permutation tests for classification :srcset: /auto_examples/model_selection/images/sphx_glr_plot_permutation_tests_for_classification_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 97-106 البيانات العشوائية ^^^^^^^^^^^ أدناه نرسم التوزيع الصفري للبيانات العشوائية. درجات التبديل مشابهة لتلك التي تم الحصول عليها باستخدام مجموعة بيانات السوسن الأصلية لأن التبديل دائمًا ما يدمر أي اعتماد بين الميزة والعلامة. الدرجة المحصلة على البيانات العشوائية الأصلية في هذه الحالة، هي سيئة للغاية. يؤدي هذا إلى قيمة p كبيرة، مما يؤكد أنه لم يكن هناك اعتماد بين الميزة والعلامة في البيانات الأصلية. .. GENERATED FROM PYTHON SOURCE LINES 106-118 .. code-block:: Python fig, ax = plt.subplots() ax.hist(perm_scores_rand, bins=20, density=True) ax.set_xlim(0.13) ax.axvline(score_rand, ls="--", color="r") score_label = f"Score on original\ndata: {score_rand:.2f}\n(p-value: {pvalue_rand:.3f})" ax.text(0.14, 7.5, score_label, fontsize=12) ax.set_xlabel("Accuracy score") ax.set_ylabel("Probability density") plt.show() .. image-sg:: /auto_examples/model_selection/images/sphx_glr_plot_permutation_tests_for_classification_002.png :alt: plot permutation tests for classification :srcset: /auto_examples/model_selection/images/sphx_glr_plot_permutation_tests_for_classification_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 119-134 سبب محتمل آخر للحصول على قيمة p عالية هو أن المصنف لم يتمكن من استخدام البنية في البيانات. في هذه الحالة، ستكون قيمة p منخفضة فقط للمصنفين القادرين على استخدام الاعتماد الموجود. في حالتنا أعلاه، حيث تكون البيانات عشوائية، سيكون لدى جميع المصنفين قيمة p عالية حيث لا توجد بنية موجودة في البيانات. أخيرًا، لاحظ أنه تم إثبات أن هذا الاختبار ينتج قيم p منخفضة حتى إذا كان هناك بنية ضعيفة فقط في البيانات [1]_. .. rubric:: المراجع .. [1] Ojala and Garriga. `Permutation Tests for Studying Classifier Performance `_. The Journal of Machine Learning Research (2010) vol. 11 .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 15.031 seconds) .. _sphx_glr_download_auto_examples_model_selection_plot_permutation_tests_for_classification.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_permutation_tests_for_classification.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_permutation_tests_for_classification.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_permutation_tests_for_classification.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_permutation_tests_for_classification.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_permutation_tests_for_classification.zip ` .. include:: plot_permutation_tests_for_classification.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_