.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/applications/plot_face_recognition.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_face_recognition.py: =================================================== مثال على التعرف على الوجوه باستخدام الوجوه المميزة وآلات المتجهات الداعمة =================================================== مجموعة البيانات المستخدمة في هذا المثال هي مقتطف مُعالج مسبقًا من "الوجوه المسماة في البرية"، المعروف باسم LFW_: http://vis-www.cs.umass.edu/lfw/lfw-funneled.tgz (233MB) .. _LFW: http://vis-www.cs.umass.edu/lfw/ .. GENERATED FROM PYTHON SOURCE LINES 13-16 .. code-block:: Python # المؤلفون: مطوري سكايت-ليرن # معرف الترخيص-SPDX: BSD-3-Clause .. GENERATED FROM PYTHON SOURCE LINES 17-29 .. code-block:: Python from time import time import matplotlib.pyplot as plt from scipy.stats import loguniform from sklearn.datasets import fetch_lfw_people from sklearn.decomposition import PCA from sklearn.metrics import ConfusionMatrixDisplay, classification_report from sklearn.model_selection import RandomizedSearchCV, train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC .. GENERATED FROM PYTHON SOURCE LINES 30-31 تنزيل البيانات، إذا لم تكن موجودة بالفعل على القرص وتحميلها كمصفوفات نومبي .. GENERATED FROM PYTHON SOURCE LINES 31-53 .. code-block:: Python lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4) # فحص مصفوفات الصور لمعرفة الأشكال (للرسم) n_samples, h, w = lfw_people.images.shape # للتعلم الآلي، نستخدم البيانات مباشرةً (حيث يتم تجاهل معلومات مواضع البكسل النسبية # بواسطة هذا النموذج) X = lfw_people.data n_features = X.shape[1] # التسمية التي يجب التنبؤ بها هي معرف الشخص y = lfw_people.target target_names = lfw_people.target_names n_classes = target_names.shape[0] print("حجم مجموعة البيانات الإجمالي:") print("n_samples: %d" % n_samples) print("n_features: %d" % n_features) print("n_classes: %d" % n_classes) .. rst-class:: sphx-glr-script-out .. code-block:: none حجم مجموعة البيانات الإجمالي: n_samples: 1288 n_features: 1850 n_classes: 7 .. GENERATED FROM PYTHON SOURCE LINES 54-55 التقسيم إلى مجموعة تدريب ومجموعة اختبار والاحتفاظ بـ 25% من البيانات للاختبار. .. GENERATED FROM PYTHON SOURCE LINES 55-64 .. code-block:: Python X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.25, random_state=42 ) scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) .. GENERATED FROM PYTHON SOURCE LINES 65-67 حساب التحليل المكون الرئيسي (الوجوه المميزة) على مجموعة بيانات الوجه (المعالجة كمجموعة بيانات غير مصنفة): استخراج الميزات غير الخاضعة للإشراف / تقليل الأبعاد .. GENERATED FROM PYTHON SOURCE LINES 67-86 .. code-block:: Python n_components = 150 print( "استخراج أفضل %d وجوه مميزة من %d وجوه" % (n_components, X_train.shape[0]) ) t0 = time() pca = PCA(n_components=n_components, svd_solver="randomized", whiten=True).fit(X_train) print("تم الانتهاء في %0.3fs" % (time() - t0)) eigenfaces = pca.components_.reshape((n_components, h, w)) print("رسم بيانات الإدخال على أساس الوجوه المميزة المتعامدة") t0 = time() X_train_pca = pca.transform(X_train) X_test_pca = pca.transform(X_test) print("تم الانتهاء في %0.3fs" % (time() - t0)) .. rst-class:: sphx-glr-script-out .. code-block:: none استخراج أفضل 150 وجوه مميزة من 966 وجوه تم الانتهاء في 0.303s رسم بيانات الإدخال على أساس الوجوه المميزة المتعامدة تم الانتهاء في 0.023s .. GENERATED FROM PYTHON SOURCE LINES 87-88 تدريب نموذج تصنيف آلة المتجهات الداعمة .. GENERATED FROM PYTHON SOURCE LINES 88-104 .. code-block:: Python print("ضبط المصنف على مجموعة التدريب") t0 = time() param_grid = { "C": loguniform(1e3, 1e5), "gamma": loguniform(1e-4, 1e-1), } clf = RandomizedSearchCV( SVC(kernel="rbf", class_weight="balanced"), param_grid, n_iter=10 ) clf = clf.fit(X_train_pca, y_train) print("تم الانتهاء في %0.3fs" % (time() - t0)) print("أفضل مقدر تم العثور عليه بواسطة البحث الشبكي:") print(clf.best_estimator_) .. rst-class:: sphx-glr-script-out .. code-block:: none ضبط المصنف على مجموعة التدريب تم الانتهاء في 5.084s أفضل مقدر تم العثور عليه بواسطة البحث الشبكي: SVC(C=7977.580335831192, class_weight='balanced', gamma=0.00369819428936649) .. GENERATED FROM PYTHON SOURCE LINES 105-106 التقييم الكمي لجودة النموذج على مجموعة الاختبار .. GENERATED FROM PYTHON SOURCE LINES 106-120 .. code-block:: Python print("التنبؤ بأسماء الأشخاص على مجموعة الاختبار") t0 = time() y_pred = clf.predict(X_test_pca) print("تم الانتهاء في %0.3fs" % (time() - t0)) print(classification_report(y_test, y_pred, target_names=target_names)) ConfusionMatrixDisplay.from_estimator( clf, X_test_pca, y_test, display_labels=target_names, xticks_rotation="vertical" ) plt.tight_layout() plt.show() .. image-sg:: /auto_examples/applications/images/sphx_glr_plot_face_recognition_001.png :alt: plot face recognition :srcset: /auto_examples/applications/images/sphx_glr_plot_face_recognition_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none التنبؤ بأسماء الأشخاص على مجموعة الاختبار تم الانتهاء في 0.058s precision recall f1-score support Ariel Sharon 0.78 0.54 0.64 13 Colin Powell 0.79 0.87 0.83 60 Donald Rumsfeld 0.80 0.59 0.68 27 George W Bush 0.87 0.97 0.92 146 Gerhard Schroeder 0.95 0.80 0.87 25 Hugo Chavez 0.91 0.67 0.77 15 Tony Blair 0.94 0.81 0.87 36 accuracy 0.86 322 macro avg 0.86 0.75 0.79 322 weighted avg 0.86 0.86 0.85 322 .. GENERATED FROM PYTHON SOURCE LINES 121-122 التقييم النوعي للتنبؤات باستخدام ماتبلوتليب .. GENERATED FROM PYTHON SOURCE LINES 122-136 .. code-block:: Python def plot_gallery(images, titles, h, w, n_row=3, n_col=4): """دالة مساعدة لرسم معرض للصور الشخصية""" plt.figure(figsize=(1.8 * n_col, 2.4 * n_row)) plt.subplots_adjust(bottom=0, left=0.01, right=0.99, top=0.90, hspace=0.35) for i in range(n_row * n_col): plt.subplot(n_row, n_col, i + 1) plt.imshow(images[i].reshape((h, w)), cmap=plt.cm.gray) plt.title(titles[i], size=12) plt.xticks(()) plt.yticks(()) .. GENERATED FROM PYTHON SOURCE LINES 137-140 رسم نتيجة التنبؤ على جزء من مجموعة الاختبار %% رسم نتيجة التنبؤ على جزء من مجموعة الاختبار .. GENERATED FROM PYTHON SOURCE LINES 140-153 .. code-block:: Python def title(y_pred, y_test, target_names, i): pred_name = target_names[y_pred[i]].rsplit(" ", 1)[-1] true_name = target_names[y_test[i]].rsplit(" ", 1)[-1] return "المتنبأ به: %s\nالحقيقي: %s" % (pred_name, true_name) prediction_titles = [ title(y_pred, y_test, target_names, i) for i in range(y_pred.shape[0]) ] plot_gallery(X_test, prediction_titles, h, w) .. image-sg:: /auto_examples/applications/images/sphx_glr_plot_face_recognition_002.png :alt: المتنبأ به: Bush الحقيقي: Bush, المتنبأ به: Bush الحقيقي: Bush, المتنبأ به: Blair الحقيقي: Blair, المتنبأ به: Bush الحقيقي: Bush, المتنبأ به: Bush الحقيقي: Bush, المتنبأ به: Bush الحقيقي: Bush, المتنبأ به: Schroeder الحقيقي: Schroeder, المتنبأ به: Powell الحقيقي: Powell, المتنبأ به: Bush الحقيقي: Bush, المتنبأ به: Bush الحقيقي: Bush, المتنبأ به: Bush الحقيقي: Bush, المتنبأ به: Bush الحقيقي: Bush :srcset: /auto_examples/applications/images/sphx_glr_plot_face_recognition_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 154-155 رسم معرض الوجوه المميزة الأكثر دلالة .. GENERATED FROM PYTHON SOURCE LINES 155-161 .. code-block:: Python eigenface_titles = ["الوجه المميز %d" % i for i in range(eigenfaces.shape[0])] plot_gallery(eigenfaces, eigenface_titles, h, w) plt.show() .. image-sg:: /auto_examples/applications/images/sphx_glr_plot_face_recognition_003.png :alt: الوجه المميز 0, الوجه المميز 1, الوجه المميز 2, الوجه المميز 3, الوجه المميز 4, الوجه المميز 5, الوجه المميز 6, الوجه المميز 7, الوجه المميز 8, الوجه المميز 9, الوجه المميز 10, الوجه المميز 11 :srcset: /auto_examples/applications/images/sphx_glr_plot_face_recognition_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 162-165 يمكن حل مشكلة التعرف على الوجه بشكل أكثر فعالية من خلال تدريب الشبكات العصبية التلافيفية، ولكن هذه العائلة من النماذج خارج نطاق مكتبة سكايت-ليرن. يجب على القراء المهتمين تجربة استخدام باي تورتش أو تنسور فلو لتنفيذ مثل هذه النماذج. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 27.894 seconds) .. _sphx_glr_download_auto_examples_applications_plot_face_recognition.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_face_recognition.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_face_recognition.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_face_recognition.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_face_recognition.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_face_recognition.zip ` .. include:: plot_face_recognition.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_