logo

StandardScaler في Sklearn

متى وكيف يتم استخدام StandardScaler؟

عندما تتقلب ميزات مجموعة البيانات المحددة بشكل كبير ضمن نطاقاتها أو يتم تسجيلها في وحدات قياس مختلفة، تدخل StandardScaler في الصورة.

يتم تحجيم البيانات إلى تباين قدره 1 بعد تقليل المتوسط ​​إلى 0 عبر StandardScaler. ولكن عند تحديد المتوسط ​​التجريبي للبيانات والانحراف المعياري، فإن القيم المتطرفة الموجودة في البيانات لها تأثير كبير يقلل من نطاق القيم المميزة.

قد تواجه العديد من خوارزميات التعلم الآلي مشكلات بسبب هذه الاختلافات في ميزات البداية. بالنسبة للخوارزميات التي تحسب المسافة، على سبيل المثال، إذا كانت أي من ميزات مجموعة البيانات تحتوي على قيم ذات نطاقات كبيرة أو مختلفة تمامًا، فإن هذه الميزة المحددة لمجموعة البيانات ستتحكم في حساب المسافة.

تعتمد وظيفة StandardScaler في sklearn على النظرية القائلة بأن متغيرات مجموعة البيانات التي تقع قيمها في نطاقات مختلفة ليس لها مساهمة متساوية في معلمات ملاءمة النموذج ووظيفة التدريب وقد تؤدي حتى إلى التحيز في التنبؤات التي تم إجراؤها باستخدام هذا النموذج.

لذلك، قبل تضمين الميزات في نموذج التعلم الآلي، يجب علينا تطبيع البيانات (μ = 0، σ = 1). يتم استخدام التقييس في هندسة الميزات بشكل شائع لمعالجة هذه المشكلة المحتملة.

التوحيد باستخدام Sklearn

 sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True) 

من خلال إزالة المتوسط ​​من الميزات وقياسها إلى تباين الوحدة، يتم توحيد الميزات باستخدام هذه الوظيفة.

صيغة حساب النتيجة القياسية للميزة هي z = (x - u) / s، حيث u هو متوسط ​​ميزة التدريب (أو صفر إذا كان with_mean = False) وs هو الانحراف المعياري للعينة (أو واحد إذا with_std = False) ).

من خلال حساب الإحصائيات ذات الصلة بالميزات الموجودة في مجموعة التدريب، يتم تطبيق التوسيط والقياس بشكل مستقل على كل ميزة. بعد ذلك، للاستخدام مع العينات اللاحقة باستخدام التحويل ()‎، يقوم الأسلوب المناسب () بتخزين المتوسط ​​والانحراف المعياري.

int إلى السلسلة c++

حدود:

    نسخ (منطقي، افتراضي = صحيح): -إذا تم تعيين هذه المعلمة على True، فحاول الابتعاد عن النسخ وقياس العينات في مكانها بدلاً من ذلك. وهذا ليس مضمونًا بالضرورة للعمل في مكانه؛ على سبيل المثال، قد تستمر الدالة في إرجاع نسخة إذا لم يكن الإدخال في شكل مصفوفة NumPy أو مصفوفة scipy.sparse CSR.with_mean (منطقي، افتراضي = صحيح):-إذا تم تعيين المعلمة على True، فقم بقياس البيانات بعد توسيطها. عند تطبيقه على مصفوفات متفرقة، يفشل هذا (ويثير استثناء)، لأن توسيطها يستلزم بناء مصفوفة كثيفة، من المتوقع، في معظم ظروف الاستخدام، أن تكون ضخمة جدًا بحيث لا يمكن وضعها في الكبش.with_std (منطقي، افتراضي = صحيح):-تقوم هذه المعلمة بقياس بيانات الإدخال إلى تباين الوحدة إذا تم ضبطها على 'صحيح' (أو يمكننا القول أنها تجعل الانحراف المعياري للوحدة).

صفات:

    مقياس_ (ndarray له شكل (n_features،) أو لا شيء):-يتم قياس البيانات نسبيًا لكل ميزة بمتوسط ​​صفري وتباين الوحدة.mean_ (ndarray له شكل (n_features،) أو لا شيء):-إنه متوسط ​​قيمة مجموعة بيانات التدريب لكل ميزة. عند تعيين الوسيطة with_mean إلى False، فإن هذه القيمة تساوي لا شيء.var_ (ndarray له شكل (n_features،) أو لا شيء):-إنها قيمة تباين كل ميزة في مجموعة بيانات التدريب. يتم استخدامه لتحديد حجم الميزات. عند تعيين الوسيطة with_std إلى False، فإن هذه القيمة تساوي لا شيء.n_features_in_ (من النوع _int):-توفر هذه السمة عدد الميزات التي تم رصدها عند التركيب.feature_names_in_ (ndarray له شكل كـ (n_features_in_،)):-هذه السمة هي الميزات التي تم تحديدها بالأسماء أثناء التركيب. يتم تعريف X فقط عندما تكون جميع أسماء الميزات الخاصة بها من سلسلة نوع البيانات.n_samples_seen_ (من النوع int أو ndarray له شكل (n_features,)):-وهذا يعطي عدد العينات التي قام المقدر بفحصها لكل ميزة.

طرق فئة StandardScaler

مناسب (X[، y، Sample_weight]) تحسب هذه الطريقة المتوسط ​​والانحراف المعياري لاستخدامهما لاحقًا في قياس البيانات.
fit_transform(X[، y]) تناسب هذه الطريقة معلمات البيانات ثم تقوم بتحويلها.
get_feature_names_out([ميزات_الإدخال]) تحصل هذه الطريقة على أسماء الميزات للتحويل.
get_params([عميق]) تعطي هذه الطريقة معلمات المقدر المعين.
معكوس_تحويل (X[، نسخة]) يعمل على تقليل حجم البيانات لتتناسب مع شكلها الأصلي.
جزئية_صالح (X[، ص، Sample_weight]) يتم حساب المتوسط ​​والانحراف المعياري على X عبر الإنترنت للقياس لاحقًا.
set_params(**بارامز) يتم استخدام هذه الطريقة لتعيين قيمة معلمات المقدر.
تحويل (X [، نسخة]) تقوم هذه الطريقة بتحويل البيانات باستخدام المعلمات المخزنة بالفعل في الفصل الدراسي.

مثال على StandardScaler

أولاً، سنقوم باستيراد المكتبات المطلوبة. لاستخدام وظيفة StandardScaler، نحتاج إلى استيراد مكتبة Sklearn.

fizzbuzz java

ثم سنقوم بتحميل مجموعة بيانات القزحية. يمكننا استيراد مجموعة بيانات IRIS من مكتبة sklearn.datasets.

سنقوم بإنشاء كائن من فئة StandardScaler.

الفصل بين الميزات المستقلة والهدف.

سوف نستخدم طريقة التحويل المناسب () لتنفيذ التحويل إلى مجموعة البيانات.

بناء الجملة:

 object_ = StandardScaler() object_.fit_transform(features) 

قمنا في البداية ببناء مثيل لطريقة StandardScaler() باتباع الصيغة المذكورة أعلاه. بالإضافة إلى ذلك، نقوم بتوحيد البيانات باستخدام fit_transform() مع الكائن المقدم.

شفرة

 # Python program to standardize the data # Importing the required library from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Printing 3 rows of original data print(X[:3, :]) # Creating an object of the StandardScaler class std_scaler = StandardScaler() # Printing 3 rows of the transformed data print(std_scaler.fit_transform(X)[:3, :]) print(std_scaler.mean_) 

انتاج |

 [[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2]] [[-0.90068117 1.01900435 -1.34022653 -1.3154443 ] [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ] [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]] [5.84333333 3.05733333 3.758 1.19933333]