Meezo ML نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 (معدل) كيف نقوم بتطبيع البيانات باستخدام الصف Normalizer في Sklearn؟ وما هو مبدأ عمله وما الفرق بينه وبين البقية في Sklearn؟ تم التعديل في 14 يوليو 2021 بواسطة Meezo ML اقتباس
1 Ali Haidar Ahmad نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 (معدل) يقوم بجعل قيم البيانات تنتمي إلى المجال من 0 إلى 1، ومبدأ عمله مختلف عن باقي طرق التطبيع "أو التقييس Scaling" في Sklearn حيث يقوم بتناول كل صف على حدى في المصفوفات ثنائية الأبعاد وينفذ عليها عملية التطبيع. ويكون التقييس بإحدى الطرق التالية: إما باستخدام l1 حيث يجمع مجموع القيم في الصف i وليكن sum ثم يقسم كل قيمة من هذا الصف على sum أي على المجموع. أو l2 بنفس المبدأ لكن هنا يكون جذر مجموع مربعات كل صف هو القيمة العظمى. أو max وهنا القيمة العظمى في كل صف هي القيمة العظمى. ويتم استخدامه في بايثون من مكتبة Sklearn كالتالي: from sklearn.preprocessing import Normalizer inpt_data = [[1,2,3], [4,5,6], [7,8,9]] transformer =Normalizer(norm='l1') #transformer =Normalizer(inpt_data,norm='l2') #transformer =Normalizer(inpt_data,norm='max') #fit إجراء العمليات اللازمة للتحويل باستخدام التابع transformer.fit(inpt_data) # إجراء التحويل transformer.transform(inpt_data) # الخرج """ array([[0.16666667, 0.33333333, 0.5 ], [0.26666667, 0.33333333, 0.4 ], [0.29166667, 0.33333333, 0.375 ]]) """ وفي Sklearn له الشكل التالي: sklearn.preprocessing.normalize(X, norm='l2', axis=1, copy=True) # Copy: لتحديد فيما إذا كنت تريد أن يتم تطبيق التغييرات على المصفوفة الأصلية أي إنشاء نسخة أم لا # axis: إذا كان 1 سوف يتم تطبيقه على كل صف أي كل عينة أما 0 فسيتم تطبيقه على كل عمود أي على كل فيتشرز تم التعديل في 14 يوليو 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
1 ريم المهدي نشر 15 يوليو 2021 أرسل تقرير نشر 15 يوليو 2021 نقوم بمعالجة البيانات قبل تمريرها للنموذج بعدة طرق منها التطبيع normalizing والتي تقوم بتطبيع القيم لوحدة محددة بإستخدام بيانات الصف (هنالك أيضاً StandardScaler والذي يتعامل مع البيانات بصورة عمودية). يتم تطبيق التطبيع في sklearn إما بإستخدام Normalizer أو preprocessing.normalize اللذان يعطيان نفس الناتج في حال تمرير نفس القيم لكليهما. والناتج يختلف حسب نوع التطبيع المطبق على البيانات و قد ينتج قيم أقل من صفر إذا كانت البيانات الممررة تحتوي على قيم سالبة، لاحظ المثال التالي: from sklearn.preprocessing import Normalizer X = [[4, 1, 2, 2], [-1, -3, -10, -3], [5, 7, 5, 1]] Normalizer(norm='l1').fit_transform(X) والذي ينتج: array([[ 0.44444444, 0.11111111, 0.22222222, 0.22222222], [-0.05882353, -0.17647059, -0.58823529, -0.17647059], [ 0.27777778, 0.38888889, 0.27777778, 0.05555556]]) وهي ايضاً نفس القيم الناتجة في حال إستخدام preprocessing.normalize: import sklearn sklearn.preprocessing.normalize(X, norm='l1') لابد أن تتذكر بالقيام بعمليات معالجة القيم المفقودة قبل مناداة الدالة لانها تنتج خطأ، راجع المثال التالي: from sklearn.preprocessing import Normalizer import numpy as np X = [[4, 1, 2, 2], [1, 3, np.nan, 3], [5, 7, 5, 1]] Normalizer().fit_transform(X) والذي يتنج عنه: ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). 1 اقتباس
السؤال
Meezo ML
كيف نقوم بتطبيع البيانات باستخدام الصف Normalizer في Sklearn؟ وما هو مبدأ عمله وما الفرق بينه وبين البقية في Sklearn؟
تم التعديل في بواسطة Meezo ML2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.