.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/miscellaneous/plot_anomaly_comparison.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_miscellaneous_plot_anomaly_comparison.py: ============================================================================ مقارنة خوارزميات الكشف عن الشذوذ لكشف القيم المتطرفة في مجموعات بيانات تجريبية ============================================================================ يوضح هذا المثال خصائص خوارزميات مختلفة للكشف عن الشذوذ على مجموعات بيانات ثنائية الأبعاد. تحتوي مجموعات البيانات على نمط واحد أو نمطين (مناطق ذات كثافة عالية) لتوضيح قدرة الخوارزميات على التعامل مع البيانات متعددة الأنماط. لكل مجموعة بيانات، يتم إنشاء 15٪ من العينات كضوضاء موحدة عشوائية. هذه النسبة هي القيمة المعطاة لمعامل nu لـ OneClassSVM ومعامل التلوث لخوارزميات الكشف عن القيم المتطرفة الأخرى. يتم عرض حدود القرار بين القيم الداخلية والخارجية باللون الأسود باستثناء عامل القيم المتطرفة المحلي (LOF) لأنه لا يحتوي على طريقة تنبؤ لتطبيقها على بيانات جديدة عند استخدامه للكشف عن القيم المتطرفة. من المعروف أن :class:`~sklearn.svm.OneClassSVM` حساس للقيم المتطرفة وبالتالي لا يؤدي أداءً جيدًا جدًا للكشف عن القيم المتطرفة. هذا المقدّر هو الأنسب للكشف عن الجدة عندما لا تكون مجموعة التدريب ملوثة بالقيم المتطرفة. ومع ذلك، فإن الكشف عن القيم المتطرفة في الأبعاد العالية، أو بدون أي افتراضات حول توزيع البيانات الداخلية، يمثل تحديًا كبيرًا، وقد يعطي One-class SVM نتائج مفيدة في هذه المواقف اعتمادًا على قيمة المعلمات الفائقة الخاصة به. :class:`sklearn.linear_model.SGDOneClassSVM` هو تطبيق لـ One-Class SVM يعتمد على هبوط التدرج العشوائي (SGD). بالاقتران مع تقريب النواة، يمكن استخدام هذا المقدّر لتقريب الحل لـ :class:`sklearn.svm.OneClassSVM` مع نواة. نلاحظ أنه على الرغم من عدم تطابقها، فإن حدود القرار لـ :class:`sklearn.linear_model.SGDOneClassSVM` وحدود :class:`sklearn.svm.OneClassSVM` متشابهة جدًا. الميزة الرئيسية لاستخدام :class:`sklearn.linear_model.SGDOneClassSVM` هي أنه يتناسب خطيًا مع عدد العينات. يفترض :class:`sklearn.covariance.EllipticEnvelope` أن البيانات غاوسية ويتعلم قطعًا ناقصًا. وبالتالي يتدهور عندما لا تكون البيانات أحادية النمط. لاحظ مع ذلك أن هذا المقدّر قوي ضد القيم المتطرفة. يبدو أن :class:`~sklearn.ensemble.IsolationForest` و :class:`~sklearn.neighbors.LocalOutlierFactor` يؤديان أداءً جيدًا بشكل معقول لمجموعات البيانات متعددة الأنماط. يتم عرض ميزة :class:`~sklearn.neighbors.LocalOutlierFactor` على المقدّرات الأخرى لمجموعة البيانات الثالثة، حيث يكون للنمطين كثافات مختلفة. يفسر هذا الميزة الجانب المحلي لـ LOF، مما يعني أنه يقارن فقط درجة شذوذ عينة واحدة بدرجات جيرانها. أخيرًا، بالنسبة لمجموعة البيانات الأخيرة، من الصعب القول أن عينة واحدة أكثر شذوذًا من عينة أخرى لأنها موزعة بشكل موحد في مكعب فائق الأبعاد. باستثناء :class:`~sklearn.svm.OneClassSVM` الذي يلائم قليلاً، فإن جميع المقدّرات تقدم حلولاً لائقة لهذا الموقف. في مثل هذه الحالة، سيكون من الحكمة إلقاء نظرة فاحصة على درجات شذوذ العينات حيث يجب أن يقوم مقدّر جيد بتعيين درجات مماثلة لجميع العينات. على الرغم من أن هذه الأمثلة تعطي بعض الحدس حول الخوارزميات، إلا أن هذا الحدس قد لا ينطبق على البيانات عالية الأبعاد. أخيرًا، لاحظ أنه تم هنا اختيار معلمات النماذج يدويًا ولكن في الممارسة العملية، يجب ضبطها. في حالة عدم وجود بيانات معنونة، تكون المشكلة غير خاضعة للإشراف تمامًا، لذلك قد يكون اختيار النموذج تحديًا. .. GENERATED FROM PYTHON SOURCE LINES 63-191 .. image-sg:: /auto_examples/miscellaneous/images/sphx_glr_plot_anomaly_comparison_001.png :alt: التغاير القوي, One-Class SVM, One-Class SVM (SGD), غابة العزل, عامل القيم المتطرفة المحلي :srcset: /auto_examples/miscellaneous/images/sphx_glr_plot_anomaly_comparison_001.png :class: sphx-glr-single-img .. code-block:: Python # Authors: The scikit-learn developers # SPDX-License-Identifier: BSD-3-Clause import time import matplotlib import matplotlib.pyplot as plt import numpy as np from sklearn import svm from sklearn.covariance import EllipticEnvelope from sklearn.datasets import make_blobs, make_moons from sklearn.ensemble import IsolationForest from sklearn.kernel_approximation import Nystroem from sklearn.linear_model import SGDOneClassSVM from sklearn.neighbors import LocalOutlierFactor from sklearn.pipeline import make_pipeline matplotlib.rcParams["contour.negative_linestyle"] = "solid" # إعدادات المثال n_samples = 300 outliers_fraction = 0.15 n_outliers = int(outliers_fraction * n_samples) n_inliers = n_samples - n_outliers # تعريف طرق الكشف عن القيم المتطرفة / الشذوذ التي سيتم مقارنتها. # يجب استخدام SGDOneClassSVM في خط أنابيب مع تقريب النواة # لإعطاء نتائج مماثلة لـ OneClassSVM anomaly_algorithms = [ ( "التغاير القوي", EllipticEnvelope(contamination=outliers_fraction, random_state=42), ), ("One-Class SVM", svm.OneClassSVM(nu=outliers_fraction, kernel="rbf", gamma=0.1)), ( "One-Class SVM (SGD)", make_pipeline( Nystroem(gamma=0.1, random_state=42, n_components=150), SGDOneClassSVM( nu=outliers_fraction, shuffle=True, fit_intercept=True, random_state=42, tol=1e-6, ), ), ), ( "غابة العزل", IsolationForest(contamination=outliers_fraction, random_state=42), ), ( "عامل القيم المتطرفة المحلي", LocalOutlierFactor(n_neighbors=35, contamination=outliers_fraction), ), ] # تعريف مجموعات البيانات blobs_params = dict(random_state=0, n_samples=n_inliers, n_features=2) datasets = [ make_blobs(centers=[[0, 0], [0, 0]], cluster_std=0.5, **blobs_params)[0], make_blobs(centers=[[2, 2], [-2, -2]], cluster_std=[0.5, 0.5], **blobs_params)[0], make_blobs(centers=[[2, 2], [-2, -2]], cluster_std=[1.5, 0.3], **blobs_params)[0], 4.0 * ( make_moons(n_samples=n_samples, noise=0.05, random_state=0)[0] - np.array([0.5, 0.25]) ), 14.0 * (np.random.RandomState(42).rand(n_samples, 2) - 0.5), ] # مقارنة المصنفات المعطاة في ظل الإعدادات المعطاة xx, yy = np.meshgrid(np.linspace(-7, 7, 150), np.linspace(-7, 7, 150)) plt.figure(figsize=(len(anomaly_algorithms) * 2 + 4, 12.5)) plt.subplots_adjust( left=0.02, right=0.98, bottom=0.001, top=0.96, wspace=0.05, hspace=0.01 ) plot_num = 1 rng = np.random.RandomState(42) for i_dataset, X in enumerate(datasets): # إضافة القيم المتطرفة X = np.concatenate([X, rng.uniform(low=-6, high=6, size=(n_outliers, 2))], axis=0) for name, algorithm in anomaly_algorithms: t0 = time.time() algorithm.fit(X) t1 = time.time() plt.subplot(len(datasets), len(anomaly_algorithms), plot_num) if i_dataset == 0: plt.title(name, size=18) # ملاءمة البيانات ووضع علامات على القيم المتطرفة if name == "عامل القيم المتطرفة المحلي": y_pred = algorithm.fit_predict(X) else: y_pred = algorithm.fit(X).predict(X) # رسم خطوط المستويات والنقاط if name != "عامل القيم المتطرفة المحلي": # LOF لا ينفذ التنبؤ Z = algorithm.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.contour(xx, yy, Z, levels=[0], linewidths=2, colors="black") colors = np.array(["#377eb8", "#ff7f00"]) plt.scatter(X[:, 0], X[:, 1], s=10, color=colors[(y_pred + 1) // 2]) plt.xlim(-7, 7) plt.ylim(-7, 7) plt.xticks(()) plt.yticks(()) plt.text( 0.99, 0.01, ("%.2fs" % (t1 - t0)).lstrip("0"), transform=plt.gca().transAxes, size=15, horizontalalignment="right", ) plot_num += 1 plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 4.533 seconds) .. _sphx_glr_download_auto_examples_miscellaneous_plot_anomaly_comparison.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/miscellaneous/plot_anomaly_comparison.ipynb :alt: Launch binder :width: 150 px .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../lite/lab/index.html?path=auto_examples/miscellaneous/plot_anomaly_comparison.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_anomaly_comparison.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_anomaly_comparison.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_anomaly_comparison.zip ` .. include:: plot_anomaly_comparison.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_