.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/applications/plot_digits_denoising.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_applications_plot_digits_denoising.py: ================================ إزالة التشويش من الصور باستخدام PCA النواة ================================ هذا المثال يوضح كيفية استخدام :class:`~sklearn.decomposition.KernelPCA` لإزالة التشويش من الصور. باختصار، نستفيد من دالة التقريب المُتعلمة أثناء `fit` لإعادة بناء الصورة الأصلية. سنقارن النتائج مع إعادة بناء دقيقة باستخدام :class:`~sklearn.decomposition.PCA`. سنستخدم مجموعة بيانات أرقام USPS لإعادة إنتاج ما هو مُقدم في القسم 4 من [1]_. .. rubric:: المراجع .. [1] `Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf. "Learning to find pre-images." Advances in neural information processing systems 16 (2004): 449-456. `_ .. GENERATED FROM PYTHON SOURCE LINES 22-25 .. code-block:: Python # المؤلفون: مطورو scikit-learn # معرف الترخيص: BSD-3-Clause .. GENERATED FROM PYTHON SOURCE LINES 26-32 تحميل مجموعة البيانات عبر OpenML --------------------------- مجموعة بيانات أرقام USPS متوفرة في OpenML. نستخدم :func:`~sklearn.datasets.fetch_openml` للحصول على هذه المجموعة. بالإضافة إلى ذلك، نقوم بتطبيع المجموعة بحيث تكون جميع قيم البكسل في النطاق (0, 1). .. GENERATED FROM PYTHON SOURCE LINES 32-41 .. code-block:: Python import numpy as np from sklearn.datasets import fetch_openml from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler X, y = fetch_openml(data_id=41082, as_frame=False, return_X_y=True) X = MinMaxScaler().fit_transform(X) .. GENERATED FROM PYTHON SOURCE LINES 42-54 ستكون الفكرة هي تعلم أساس PCA (مع وبدون نواة) على الصور المشوشة، ثم استخدام هذه النماذج لإعادة بناء وإزالة التشويش من هذه الصور. لذلك، نقسم مجموعتنا إلى مجموعة تدريب واختبار مكونة من 1,000 عينة للتدريب و 100 عينة للاختبار. هذه الصور خالية من التشويش وسنستخدمها لتقييم كفاءة طرق إزالة التشويش. بالإضافة إلى ذلك، ننشئ نسخة من مجموعة البيانات الأصلية ونضيف تشويشًا غاوسيًا. فكرة هذا التطبيق هي إظهار أننا يمكننا إزالة التشويش من الصور المشوشة من خلال تعلم أساس PCA على بعض الصور غير المشوشة. سنستخدم كل من PCA وPCA المعتمد على النواة لحل هذه المشكلة. .. GENERATED FROM PYTHON SOURCE LINES 54-65 .. code-block:: Python X_train, X_test, y_train, y_test = train_test_split( X, y, stratify=y, random_state=0, train_size=1_000, test_size=100 ) rng = np.random.RandomState(0) noise = rng.normal(scale=0.25, size=X_test.shape) X_test_noisy = X_test + noise noise = rng.normal(scale=0.25, size=X_train.shape) X_train_noisy = X_train + noise .. GENERATED FROM PYTHON SOURCE LINES 66-68 بالإضافة إلى ذلك، سننشئ دالة مساعدة لتقييم إعادة بناء الصورة بشكل نوعي من خلال رسم الصور الاختبارية. .. GENERATED FROM PYTHON SOURCE LINES 68-80 .. code-block:: Python import matplotlib.pyplot as plt def plot_digits(X, title): """دالة مساعدة صغيرة لرسم 100 رقم.""" fig, axs = plt.subplots(nrows=10, ncols=10, figsize=(8, 8)) for img, ax in zip(X, axs.ravel()): ax.imshow(img.reshape((16, 16)), cmap="Greys") ax.axis("off") fig.suptitle(title, fontsize=24) .. GENERATED FROM PYTHON SOURCE LINES 81-86 بالإضافة إلى ذلك، سنستخدم متوسط الخطأ التربيعي (MSE) لتقييم إعادة بناء الصورة بشكل كمي. دعنا نلقي نظرة أولاً لنرى الفرق بين الصور الخالية من التشويش والصور المشوشة. سنتحقق من مجموعة الاختبار في هذا الصدد. .. GENERATED FROM PYTHON SOURCE LINES 86-91 .. code-block:: Python plot_digits(X_test, "صور الاختبار غير المشوشة") plot_digits( X_test_noisy, f"صور الاختبار المشوشة\nMSE: {np.mean((X_test - X_test_noisy) ** 2):.2f}" ) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_001.png :alt: صور الاختبار غير المشوشة :srcset: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_001.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_002.png :alt: صور الاختبار المشوشة MSE: 0.06 :srcset: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_002.png :class: sphx-glr-multi-img .. GENERATED FROM PYTHON SOURCE LINES 92-97 تعلم أساس `PCA` --------------------- يمكننا الآن تعلم أساس PCA الخاص بنا باستخدام كل من PCA الخطي وPCA النواة الذي يستخدم دالة أساس شعاعية (RBF). .. GENERATED FROM PYTHON SOURCE LINES 97-114 .. code-block:: Python from sklearn.decomposition import PCA, KernelPCA pca = PCA(n_components=32, random_state=42) kernel_pca = KernelPCA( n_components=400, kernel="rbf", gamma=1e-3, fit_inverse_transform=True, alpha=5e-3, random_state=42, ) pca.fit(X_train_noisy) _ = kernel_pca.fit(X_train_noisy) pca.fit(X_train_noisy) _ = kernel_pca.fit(X_train_noisy) .. GENERATED FROM PYTHON SOURCE LINES 115-124 إعادة بناء وإزالة تشويش صور الاختبار ----------------------------------- الآن، يمكننا تحويل وإعادة بناء مجموعة الاختبار المشوشة. نظرًا لأننا استخدمنا مكونات أقل من عدد الخصائص الأصلية، فسنحصل على تقريب من المجموعة الأصلية. في الواقع، من خلال إسقاط المكونات التي تفسر التباين الأقل في PCA، نأمل في إزالة التشويش. يحدث تفكير مماثل في PCA النواة؛ ومع ذلك، نتوقع إعادة بناء أفضل لأننا نستخدم نواة غير خطية لتعلم أساس PCA ودالة ريدج النواة لتعلم دالة الخريطة. .. GENERATED FROM PYTHON SOURCE LINES 124-129 .. code-block:: Python X_reconstructed_kernel_pca = kernel_pca.inverse_transform( kernel_pca.transform(X_test_noisy) ) X_reconstructed_pca = pca.inverse_transform(pca.transform(X_test_noisy)) .. GENERATED FROM PYTHON SOURCE LINES 130-143 .. code-block:: Python plot_digits(X_test, "صور الاختبار غير المشوشة") plot_digits( X_reconstructed_pca, f"إعادة بناء PCA\nMSE: {np.mean((X_test - X_reconstructed_pca) ** 2):.2f}", ) plot_digits( X_reconstructed_kernel_pca, ( "إعادة بناء PCA النواة\n" f"MSE: {np.mean((X_test - X_reconstructed_kernel_pca) ** 2):.2f}" ), ) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_003.png :alt: صور الاختبار غير المشوشة :srcset: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_003.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_004.png :alt: إعادة بناء PCA MSE: 0.01 :srcset: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_004.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_005.png :alt: إعادة بناء PCA النواة MSE: 0.03 :srcset: /auto_examples/applications/images/sphx_glr_plot_digits_denoising_005.png :class: sphx-glr-multi-img .. GENERATED FROM PYTHON SOURCE LINES 144-149 لدى PCA متوسط خطأ تربيعي (MSE) أقل من PCA النواة. ومع ذلك، قد لا يفضل التحليل النوعي PCA بدلاً من PCA النواة. نلاحظ أن PCA النواة قادر على إزالة التشويش الخلفي وتوفير صورة أكثر سلاسة. ومع ذلك، تجدر الإشارة إلى أن نتائج إزالة التشويش باستخدام PCA النواة ستعتمد على المعلمات `n_components` و`gamma` و`alpha`. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 13.660 seconds) .. _sphx_glr_download_auto_examples_applications_plot_digits_denoising.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/applications/plot_digits_denoising.ipynb :alt: Launch binder :width: 150 px .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../lite/lab/index.html?path=auto_examples/applications/plot_digits_denoising.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_digits_denoising.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_digits_denoising.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_digits_denoising.zip ` .. include:: plot_digits_denoising.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_