كيفية تطبيع البيانات في بايثون
في كثير من الأحيان في الإحصاء والتعلم الآلي نقوم بتطبيع المتغيرات بحيث يكون نطاق القيم بين 0 و 1.
السبب الأكثر شيوعًا لتطبيع المتغيرات هو عندما نقوم بإجراء نوع من التحليل متعدد المتغيرات (أي أننا نريد أن نفهم العلاقة بين العديد من متغيرات التوقع ومتغير الاستجابة) ونريد أن يساهم كل متغير بالتساوي في التحليل.
عندما يتم قياس المتغيرات على مستويات مختلفة، فإنها غالبا لا تساهم بشكل متساو في التحليل. على سبيل المثال، إذا كانت قيم متغير واحد تتراوح من 0 إلى 100000 وقيم متغير آخر تتراوح من 0 إلى 100، فسيتم تعيين وزن أكبر للمتغير ذو النطاق الأكبر في التحليل.
ومن خلال توحيد المتغيرات، يمكننا التأكد من أن كل متغير يساهم بالتساوي في التحليل.
لتطبيع القيم بين 0 و 1 يمكننا استخدام الصيغة التالية:
x المعيار = (x i – x min ) / (x max – x min )
ذهب:
- x القاعدة : القيمة المقيسة في مجموعة البيانات
- x i : القيمة i لمجموعة البيانات
- x max : الحد الأدنى للقيمة في مجموعة البيانات
- x min : الحد الأقصى للقيمة في مجموعة البيانات
توضح الأمثلة التالية كيفية تسوية متغير واحد أو أكثر في بايثون.
المثال 1: تطبيع مصفوفة NumPy
يوضح الكود التالي كيفية تسوية كافة القيم في مصفوفة NumPy:
import numpy as np #create NumPy array data = np. array ([[13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71]]) #normalize all values in array data_norm = (data - data. min ())/ (data. max () - data. min ()) #view normalized values data_norm array([[0. , 0.05172414, 0.10344828, 0.15517241, 0.17241379, 0.43103448, 0.5862069, 0.74137931, 0.77586207, 0.86206897, 0.89655172, 0.98275862, 1. ]])
كل قيمة من القيم في المصفوفة التي تمت تسويتها تقع الآن بين 0 و1.
المثال 2: تطبيع جميع المتغيرات في Pandas DataFrame
يوضح التعليمة البرمجية التالية كيفية تسوية جميع المتغيرات في Pandas DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]}) #normalize values in every column df_norm = (df-df. min ())/ (df. max () - df. min ()) #view normalized DataFrame df_norm points assists rebounds 0 0.764706 0.125 0.857143 1 0.000000 0.375 0.428571 2 0.176471 0.375 0.714286 3 0.117647 0.625 0.142857 4 0.411765 1.000 0.142857 5 0.647059 0.625 0.000000 6 0.764706 0.625 0.571429 7 1.000000 0.000 1.000000
تتراوح الآن كل قيمة في كل عمود بين 0 و1.
مثال 3: تطبيع متغيرات محددة في Pandas DataFrame
يوضح الكود التالي كيفية تسوية متغير معين في pandas DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]}) define columns to normalize x = df. iloc [:,0:2] #normalize values in first two columns only df. iloc [:,0:2] = (xx. min ())/ (x. max () - x. min ()) #view normalized DataFrame df points assists rebounds 0 0.764706 0.125 11 1 0.000000 0.375 8 2 0.176471 0.375 10 3 0.117647 0.625 6 4 0.411765 1.000 6 5 0.647059 0.625 5 6 0.764706 0.625 9 7 1.000000 0.000 12
لاحظ أنه يتم تطبيع القيم الموجودة في العمودين الأولين فقط.
مصادر إضافية
توفر البرامج التعليمية التالية معلومات إضافية حول تسوية البيانات:
كيفية تطبيع البيانات بين 0 و 1
كيفية تطبيع البيانات بين 0 و 100
التوحيد أو التطبيع: ما الفرق؟