Menu
CoddyTech
flag Ar iconالعربيةdown icon

البثّ

جزء من قسم البيانات والرسوم البيانية في رحلة Machine Learning على Coddy. الدرس 13 من 60.

تتعلّم النماذج بشكل أفضل عندما تكون قيمة كل سمة قريبة من 0. لذا تطرح متوسط كل عمود من قيمه، وتنسخ NumPy المتوسطات إلى جميع الصفوف:

جدول من 3 صفوف وعمودين للطول والوزن، مطروحًا منه صف المتوسطات 170 و70 المنسوخ إلى الصفوف الثلاثة كلها، يساوي الجدول المتمركز: 0 و-10، 10 و10، -10 و0

في الشيفرة، لأطوال وأوزان ثلاثة أشخاص:

data = np.array([[170, 60],
                 [180, 80],
                 [160, 70]])
print(data - data.mean(axis=0))

يطبع هذا:

[[  0. -10.]
 [ 10.  10.]
 [-10.   0.]]

هذا النسخ هو التوحيد القياسي. أصبح الجدول الآن متمركزًا: توضح كل قيمة مدى بُعدها عن متوسط عمودها.

المتوسطات لها الشكل (2,): قيمة واحدة لكل عمود في الجدول ذي الشكل (3, 2). أي طول آخر يؤدي إلى ظهور خطأ.

challenge icon

التحدي

سهل

تُجري تطبيقات اللياقة البدنية توسيطًا لكل جدول قبل التدريب. يستدعي الكود الابتدائي center على جدولين، هما users (3 ميزات) وworkouts (ميزتان)، ثم يطبع النتائج. حاليًا، تُرجع center الجدول كما هو دون تغيير.

أكمل center بحيث تطرح متوسط كل عمود من ذلك العمود، مهما كان عدد الأعمدة. اترك الأسطر التي تليه كما هي.

مع مستخدمين اثنين وتمرينين اثنين، سيبدو الناتج كما يلي:

Centered users:
[[-6.  7. -5.]
 [ 6. -7.  5.]]
Column means after centering: [0. 0. 0.]
Centered workouts:
[[-10. -90.]
 [ 10.  90.]]
Column means after centering: [0. 0.]

جرّب بنفسك

import numpy as np


def center(table):
    # أعِد table بعد طرح متوسط كل عمود من قيمه
    # اكتب الكود الخاص بك أدناه
    return table


# صف واحد لكل مستخدم: العمر، معدل ضربات القلب أثناء الراحة، دقائق التمرين يوميًا
users = np.array([[25, 62, 30],
                  [31, 70, 45],
                  [40, 58, 20],
                  [29, 66, 25]])
# صف واحد لكل تمرين: الدقائق، السعرات الحرارية المحروقة
workouts = np.array([[30, 240],
                     [45, 410],
                     [20, 150],
                     [60, 520],
                     [35, 300]])

# لا تغيّر الأسطر أدناه
print("Centered users:")
print(center(users))
print("Column means after centering:", np.round(center(users).mean(axis=0), 2))
print("Centered workouts:")
print(center(workouts))
print("Column means after centering:", np.round(center(workouts).mean(axis=0), 2))
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البيانات والرسوم البيانية

تدرّب بنفسك: مترجم Python عبر الإنترنت