.. _developers-utils: ======================== أدوات مساعدة للمطورين ======================== يحتوي Scikit-learn على عدد من الأدوات المساعدة للمساعدة في التطوير. توجد هذه في :mod:`sklearn.utils`، وتتضمن أدوات في عدد من الفئات. جميع الدوال والفئات التالية موجودة في الوحدة :mod:`sklearn.utils`. .. warning :: هذه الأدوات المساعدة مخصصة للاستخدام داخليًا داخل حزمة scikit-learn. ليس مضمونًا أنها ستكون مستقرة بين إصدارات scikit-learn. سيتم إزالة عمليات النقل إلى إصدارات أقدم، على وجه الخصوص، مع تطور تبعيات scikit-learn. .. currentmodule:: sklearn.utils أدوات التحقق من الصحة ======================= هذه أدوات تُستخدم للتحقق من صحة الإدخال والتحقق منه. عندما تكتب دالة تقبل المصفوفات أو المصفوفات المتفرقة كوسيطات، يجب استخدام ما يلي عند الاقتضاء. - :func:`assert_all_finite`: طرح خطأ إذا كانت المصفوفة تحتوي على NaNs أو Infs. - :func:`as_float_array`: تحويل الإدخال إلى مصفوفة من العناصر العائمة. إذا تم تمرير مصفوفة متفرقة، فسيتم إرجاع مصفوفة متفرقة. - :func:`check_array`: تحقق من أن الإدخال عبارة عن مصفوفة ثنائية الأبعاد، طرح خطأ في المصفوفات المتفرقة. يمكن إعطاء تنسيقات المصفوفة المتفرقة المسموح بها اختياريًا، بالإضافة إلى السماح بمصفوفات أحادية الأبعاد أو متعددة الأبعاد. يستدعي :func:`assert_all_finite` افتراضيًا. - :func:`check_X_y`: تحقق من أن X و y لهما طول متسق، يستدعي check_array على X، و column_or_1d على y. بالنسبة للتصنيف متعدد التسميات أو الانحدار متعدد الأهداف، حدد multi_output = True، وفي هذه الحالة سيتم استدعاء check_array على y. - :func:`indexable`: تحقق من أن جميع مصفوفات الإدخال لها طول متسق ويمكن تقطيعها أو فهرستها باستخدام safe_index. يُستخدم هذا للتحقق من صحة إدخال التحقق المتبادل. - :func:`validation.check_memory` يتحقق من أن الإدخال يشبه ``joblib.Memory``، مما يعني أنه يمكن تحويله إلى نموذج ``sklearn.utils.Memory`` (عادةً ما يكون str يشير إلى ``cachedir``) أو له نفس الواجهة. إذا كانت التعليمات البرمجية الخاصة بك تعتمد على مُولِّد أرقام عشوائية، فلا ينبغي أبدًا استخدام دوال مثل ``numpy.random.random`` أو ``numpy.random.normal``. يمكن أن يؤدي هذا النهج إلى مشكلات في إمكانية التكرار في اختبارات الوحدة. بدلاً من ذلك، يجب استخدام كائن ``numpy.random.RandomState``، والذي تم إنشاؤه من وسيطة ``random_state`` تم تمريرها إلى الفئة أو الدالة. الدالة :func:`check_random_state`، أدناه، يمكن استخدامها بعد ذلك لإنشاء كائن مُولِّد أرقام عشوائية. - :func:`check_random_state`: إنشاء كائن ``np.random.RandomState`` من معلمة ``random_state``. - إذا كانت ``random_state`` هي ``None`` أو ``np.random``، فسيتم إرجاع كائن ``RandomState`` مهيأ عشوائيًا. - إذا كانت ``random_state`` عددًا صحيحًا، فسيتم استخدامها لإنشاء بذرة لكائن ``RandomState`` جديد. - إذا كانت ``random_state`` كائن ``RandomState``، فسيتم تمريره. فمثلا:: >>> from sklearn.utils import check_random_state >>> random_state = 0 >>> random_state = check_random_state(random_state) >>> random_state.rand(4) array([0.5488135 , 0.71518937, 0.60276338, 0.54488318]) عند تطوير المقدر الخاص بك المتوافق مع scikit-learn، تتوفر المساعدات التالية. - :func:`validation.check_is_fitted`: تحقق من أن المقدر قد تم توفيقه قبل استدعاء ``transform`` أو ``predict`` أو أساليب مماثلة. يسمح هذا المساعد بطرح رسالة خطأ موحدة عبر المقدر. - :func:`validation.has_fit_parameter`: تحقق من دعم معلمة معينة في أسلوب ``fit`` لمقدر معين. عمليات الجبر الخطي الفعالة وعمليات المصفوفة ================================================ - :func:`extmath.randomized_range_finder`: إنشاء مصفوفة متعامدة يقترب مداها من مدى الإدخال. يُستخدم هذا في :func:`extmath.randomized_svd`، أدناه. - :func:`extmath.randomized_svd`: حساب تحليل القيمة المفردة العشوائي المقطوع k. تجد هذه الخوارزمية تحليل القيمة المفردة المقطوع الدقيق باستخدام العشوائية لتسريع العمليات الحسابية. إنها سريعة بشكل خاص على المصفوفات الكبيرة التي ترغب في استخراج عدد صغير فقط من المكونات منها. - `arrayfuncs.cholesky_delete`: (يُستخدم في :func:`~sklearn.linear_model.lars_path`) إزالة عنصر من عامل تحليل Cholesky. - :func:`arrayfuncs.min_pos`: (يُستخدم في ``sklearn.linear_model.least_angle``) ابحث عن الحد الأدنى للقيم الموجبة داخل المصفوفة. - :func:`extmath.fast_logdet`: حساب لوغاريتم محدد مصفوفة بكفاءة. - :func:`extmath.density`: حساب كثافة متجه متفرق بكفاءة - :func:`extmath.safe_sparse_dot`: حاصل الضرب النقطي الذي سيعالج بشكل صحيح مدخلات ``scipy.sparse``. إذا كانت المدخلات كثيفة، فهي تعادل ``numpy.dot``. - :func:`extmath.weighted_mode`: امتداد لـ ``scipy.stats.mode`` الذي يسمح لكل عنصر أن يكون له وزن ذو قيمة حقيقية. - :func:`resample`: إعادة أخذ عينات من المصفوفات أو المصفوفات المتفرقة بطريقة متسقة. يُستخدم في :func:`shuffle`، أدناه. - :func:`shuffle`: خلط المصفوفات أو المصفوفات المتفرقة بطريقة متسقة. يُستخدم في :func:`~sklearn.cluster.k_means`. أخذ العينات العشوائية الفعال =============================== - :func:`random.sample_without_replacement`: ينفذ خوارزميات فعالة لأخذ عينات من أعداد صحيحة ``n_samples`` من مجموعة ذات حجم ``n_population`` بدون استبدال. إجراءات فعالة للمصفوفات المتفرقة =================================== تستضيف وحدة cython ``sklearn.utils.sparsefuncs`` ملحقات مُجمَّعة لمعالجة بيانات ``scipy.sparse`` بكفاءة. - :func:`sparsefuncs.mean_variance_axis`: حساب المتوسطات و التباينات على طول محور محدد لمصفوفة CSR. يُستخدم لتطبيع معيار إيقاف التسامح في :class:`~sklearn.cluster.KMeans`. - :func:`sparsefuncs_fast.inplace_csr_row_normalize_l1` و :func:`sparsefuncs_fast.inplace_csr_row_normalize_l2`: يمكن استخدامها لتطبيع عينات متفرقة فردية إلى معيار L1 أو L2 للوحدة كما هو الحال في :class:`~sklearn.preprocessing.Normalizer`. - :func:`sparsefuncs.inplace_csr_column_scale`: يمكن استخدامها لضرب أعمدة مصفوفة CSR بمقياس ثابت (مقياس واحد لكل عمود). يُستخدم لقياس الميزات إلى انحراف معياري للوحدة في :class:`~sklearn.preprocessing.StandardScaler`. - :func:`~sklearn.neighbors.sort_graph_by_row_values`: يمكن استخدامها لفرز مصفوفة CSR متفرقة بحيث يتم تخزين كل صف بقيم متزايدة. هذا مفيد لتحسين الكفاءة عند استخدام مصفوفات المسافة المتفرقة المحسوبة مسبقًا في مقدرات تعتمد على رسم بياني لأقرب الجيران. إجراءات الرسم البياني ======================= - :func:`graph.single_source_shortest_path_length`: (لا يُستخدم حاليًا في scikit-learn) إرجاع أقصر مسار من مصدر واحد إلى جميع العقد المتصلة على رسم بياني. تم تكييف الشفرة من `networkx `_. إذا كانت هناك حاجة إليها مرة أخرى، فسيكون من الأسرع بكثير استخدام تكرار واحد لخوارزمية Dijkstra من ``graph_shortest_path``. دوال الاختبار ============== - :func:`discovery.all_estimators`: يُعيد قائمة بجميع المقدرات في scikit-learn لاختبار السلوك والواجهات المتسقة. - :func:`discovery.all_displays`: يُعيد قائمة بجميع عروض (المتعلقة بواجهة برمجة تطبيقات التخطيط) في scikit-learn لاختبار السلوك والواجهات المتسقة. - :func:`discovery.all_functions`: يُعيد قائمة بجميع الدوال في scikit-learn لاختبار السلوك والواجهات المتسقة. دالة مساعدة متعددة الفئات ومتعددة التسميات ============================================== - :func:`multiclass.is_multilabel`: دالة مساعدة للتحقق مما إذا كانت المهمة هي تصنيف متعدد التسميات. - :func:`multiclass.unique_labels`: دالة مساعدة لاستخراج مصفوفة مرتبة من التسميات الفريدة من تنسيقات مختلفة للهدف. دوال مساعدة ============= - :class:`gen_even_slices`: مُولِّد لإنشاء حزم ``n`` من الشرائح تصل إلى ``n``. يُستخدم في :func:`~sklearn.decomposition.dict_learning` و :func:`~sklearn.cluster.k_means`. - :class:`gen_batches`: مُولِّد لإنشاء شرائح تحتوي على عناصر بحجم دفعة من 0 إلى ``n`` - :func:`safe_mask`: دالة مساعدة لتحويل قناع إلى التنسيق المتوقع بواسطة مصفوفة numpy أو مصفوفة scipy المتفرقة التي سيتم استخدامه عليها (تدعم المصفوفات المتفرقة فهارس الأعداد الصحيحة فقط بينما تدعم مصفوفات numpy كلاً من أقنعة منطقية وفهارس الأعداد الصحيحة). - :func:`safe_sqr`: دالة مساعدة للتربيع الموحد (``**2``) لـ عناصر تشبه المصفوفة والمصفوفات والمصفوفات المتفرقة. دوال التجزئة ============== - يوفر :func:`murmurhash3_32` غلافًا لـ python لـ دالة التجزئة غير المشفرة ``MurmurHash3_x86_32`` C++. دالة التجزئة هذه مناسبة لتنفيذ جداول البحث، وفلاتر Bloom، و Count Min Sketch، وتجزئة الميزات، والإسقاطات العشوائية المتفرقة المُحددة ضمنيًا:: >>> from sklearn.utils import murmurhash3_32 >>> murmurhash3_32("some feature", seed=0) == -384616559 True >>> murmurhash3_32("some feature", seed=0, positive=True) == 3910350737 True يمكن أيضًا "cimported" وحدة ``sklearn.utils.murmurhash`` من وحدات cython الأخرى للاستفادة من الأداء العالي لـ MurmurHash مع تخطي النفقات العامة لمترجم Python. التحذيرات والاستثناءات ======================= - :class:`deprecated`: مُزَيِّن لتمييز دالة أو فئة على أنها مُهمَلة. - :class:`~sklearn.exceptions.ConvergenceWarning`: تحذير مخصص لاكتشاف مشكلات التقارب. يُستخدم في ``sklearn.covariance.graphical_lasso``.