أدوات مساعدة للمطورين#

يحتوي Scikit-learn على عدد من الأدوات المساعدة للمساعدة في التطوير. توجد هذه في sklearn.utils، وتتضمن أدوات في عدد من الفئات. جميع الدوال والفئات التالية موجودة في الوحدة sklearn.utils.

تحذير

هذه الأدوات المساعدة مخصصة للاستخدام داخليًا داخل حزمة scikit-learn. ليس مضمونًا أنها ستكون مستقرة بين إصدارات scikit-learn. سيتم إزالة عمليات النقل إلى إصدارات أقدم، على وجه الخصوص، مع تطور تبعيات scikit-learn.

أدوات التحقق من الصحة#

هذه أدوات تُستخدم للتحقق من صحة الإدخال والتحقق منه. عندما تكتب دالة تقبل المصفوفات أو المصفوفات المتفرقة كوسيطات، يجب استخدام ما يلي عند الاقتضاء.

  • assert_all_finite: طرح خطأ إذا كانت المصفوفة تحتوي على NaNs أو Infs.

  • as_float_array: تحويل الإدخال إلى مصفوفة من العناصر العائمة. إذا تم تمرير مصفوفة متفرقة، فسيتم إرجاع مصفوفة متفرقة.

  • check_array: تحقق من أن الإدخال عبارة عن مصفوفة ثنائية الأبعاد، طرح خطأ في المصفوفات المتفرقة. يمكن إعطاء تنسيقات المصفوفة المتفرقة المسموح بها اختياريًا، بالإضافة إلى السماح بمصفوفات أحادية الأبعاد أو متعددة الأبعاد. يستدعي assert_all_finite افتراضيًا.

  • check_X_y: تحقق من أن X و y لهما طول متسق، يستدعي check_array على X، و column_or_1d على y. بالنسبة للتصنيف متعدد التسميات أو الانحدار متعدد الأهداف، حدد multi_output = True، وفي هذه الحالة سيتم استدعاء check_array على y.

  • indexable: تحقق من أن جميع مصفوفات الإدخال لها طول متسق ويمكن تقطيعها أو فهرستها باستخدام safe_index. يُستخدم هذا للتحقق من صحة إدخال التحقق المتبادل.

  • validation.check_memory يتحقق من أن الإدخال يشبه joblib.Memory، مما يعني أنه يمكن تحويله إلى نموذج sklearn.utils.Memory (عادةً ما يكون str يشير إلى cachedir) أو له نفس الواجهة.

إذا كانت التعليمات البرمجية الخاصة بك تعتمد على مُولِّد أرقام عشوائية، فلا ينبغي أبدًا استخدام دوال مثل numpy.random.random أو numpy.random.normal. يمكن أن يؤدي هذا النهج إلى مشكلات في إمكانية التكرار في اختبارات الوحدة. بدلاً من ذلك، يجب استخدام كائن numpy.random.RandomState، والذي تم إنشاؤه من وسيطة random_state تم تمريرها إلى الفئة أو الدالة. الدالة check_random_state، أدناه، يمكن استخدامها بعد ذلك لإنشاء كائن مُولِّد أرقام عشوائية.

  • 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، تتوفر المساعدات التالية.

  • validation.check_is_fitted: تحقق من أن المقدر قد تم توفيقه قبل استدعاء transform أو predict أو أساليب مماثلة. يسمح هذا المساعد بطرح رسالة خطأ موحدة عبر المقدر.

  • validation.has_fit_parameter: تحقق من دعم معلمة معينة في أسلوب fit لمقدر معين.

عمليات الجبر الخطي الفعالة وعمليات المصفوفة#

  • extmath.randomized_range_finder: إنشاء مصفوفة متعامدة يقترب مداها من مدى الإدخال. يُستخدم هذا في extmath.randomized_svd، أدناه.

  • extmath.randomized_svd: حساب تحليل القيمة المفردة العشوائي المقطوع k. تجد هذه الخوارزمية تحليل القيمة المفردة المقطوع الدقيق باستخدام العشوائية لتسريع العمليات الحسابية. إنها سريعة بشكل خاص على المصفوفات الكبيرة التي ترغب في استخراج عدد صغير فقط من المكونات منها.

  • arrayfuncs.cholesky_delete: (يُستخدم في lars_path) إزالة عنصر من عامل تحليل Cholesky.

  • arrayfuncs.min_pos: (يُستخدم في sklearn.linear_model.least_angle) ابحث عن الحد الأدنى للقيم الموجبة داخل المصفوفة.

  • extmath.fast_logdet: حساب لوغاريتم محدد مصفوفة بكفاءة.

  • extmath.density: حساب كثافة متجه متفرق بكفاءة

  • extmath.safe_sparse_dot: حاصل الضرب النقطي الذي سيعالج بشكل صحيح مدخلات scipy.sparse. إذا كانت المدخلات كثيفة، فهي تعادل numpy.dot.

  • extmath.weighted_mode: امتداد لـ scipy.stats.mode الذي يسمح لكل عنصر أن يكون له وزن ذو قيمة حقيقية.

  • resample: إعادة أخذ عينات من المصفوفات أو المصفوفات المتفرقة بطريقة متسقة. يُستخدم في shuffle، أدناه.

  • shuffle: خلط المصفوفات أو المصفوفات المتفرقة بطريقة متسقة. يُستخدم في k_means.

أخذ العينات العشوائية الفعال#

  • random.sample_without_replacement: ينفذ خوارزميات فعالة لأخذ عينات من أعداد صحيحة n_samples من مجموعة ذات حجم n_population بدون استبدال.

إجراءات فعالة للمصفوفات المتفرقة#

تستضيف وحدة cython sklearn.utils.sparsefuncs ملحقات مُجمَّعة لمعالجة بيانات scipy.sparse بكفاءة.

  • sparsefuncs.mean_variance_axis: حساب المتوسطات و التباينات على طول محور محدد لمصفوفة CSR. يُستخدم لتطبيع معيار إيقاف التسامح في KMeans.

  • sparsefuncs_fast.inplace_csr_row_normalize_l1 و sparsefuncs_fast.inplace_csr_row_normalize_l2: يمكن استخدامها لتطبيع عينات متفرقة فردية إلى معيار L1 أو L2 للوحدة كما هو الحال في Normalizer.

  • sparsefuncs.inplace_csr_column_scale: يمكن استخدامها لضرب أعمدة مصفوفة CSR بمقياس ثابت (مقياس واحد لكل عمود). يُستخدم لقياس الميزات إلى انحراف معياري للوحدة في StandardScaler.

  • sort_graph_by_row_values: يمكن استخدامها لفرز مصفوفة CSR متفرقة بحيث يتم تخزين كل صف بقيم متزايدة. هذا مفيد لتحسين الكفاءة عند استخدام مصفوفات المسافة المتفرقة المحسوبة مسبقًا في مقدرات تعتمد على رسم بياني لأقرب الجيران.

إجراءات الرسم البياني#

  • graph.single_source_shortest_path_length: (لا يُستخدم حاليًا في scikit-learn) إرجاع أقصر مسار من مصدر واحد إلى جميع العقد المتصلة على رسم بياني. تم تكييف الشفرة من networkx. إذا كانت هناك حاجة إليها مرة أخرى، فسيكون من الأسرع بكثير استخدام تكرار واحد لخوارزمية Dijkstra من graph_shortest_path.

دوال الاختبار#

  • discovery.all_estimators: يُعيد قائمة بجميع المقدرات في scikit-learn لاختبار السلوك والواجهات المتسقة.

  • discovery.all_displays: يُعيد قائمة بجميع عروض (المتعلقة بواجهة برمجة تطبيقات التخطيط) في scikit-learn لاختبار السلوك والواجهات المتسقة.

  • discovery.all_functions: يُعيد قائمة بجميع الدوال في scikit-learn لاختبار السلوك والواجهات المتسقة.

دالة مساعدة متعددة الفئات ومتعددة التسميات#

  • multiclass.is_multilabel: دالة مساعدة للتحقق مما إذا كانت المهمة هي تصنيف متعدد التسميات.

  • multiclass.unique_labels: دالة مساعدة لاستخراج مصفوفة مرتبة من التسميات الفريدة من تنسيقات مختلفة للهدف.

دوال مساعدة#

  • gen_even_slices: مُولِّد لإنشاء حزم n من الشرائح تصل إلى n. يُستخدم في dict_learning و k_means.

  • gen_batches: مُولِّد لإنشاء شرائح تحتوي على عناصر بحجم دفعة من 0 إلى n

  • safe_mask: دالة مساعدة لتحويل قناع إلى التنسيق المتوقع بواسطة مصفوفة numpy أو مصفوفة scipy المتفرقة التي سيتم استخدامه عليها (تدعم المصفوفات المتفرقة فهارس الأعداد الصحيحة فقط بينما تدعم مصفوفات numpy كلاً من أقنعة منطقية وفهارس الأعداد الصحيحة).

  • safe_sqr: دالة مساعدة للتربيع الموحد (**2) لـ عناصر تشبه المصفوفة والمصفوفات والمصفوفات المتفرقة.

دوال التجزئة#

  • يوفر 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.

التحذيرات والاستثناءات#

  • deprecated: مُزَيِّن لتمييز دالة أو فئة على أنها مُهمَلة.

  • ConvergenceWarning: تحذير مخصص لاكتشاف مشكلات التقارب. يُستخدم في sklearn.covariance.graphical_lasso.