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

التحجيم من الحد الأدنى إلى الأقصى

جزء من قسم الإحصاء لتعلّم الآلة في رحلة Machine Learning على Coddy. الدرس 48 من 64.

يمنح التحجيم من الحد الأدنى إلى الحد الأقصى كلَّ ميزة فرصةً عادلة للتأثير: في كل عمود، تصبح أصغر قيمة 0، وأكبر قيمة 1، وتقع القيم الأخرى بينهما.

أضف شخصًا عمره 40 عامًا ودخله 80,000 دولار، ثم طبّع القيم الأربع جميعها:

أعمار أربعة عملاء ودخولهم في جدول، ثم سهم، ثم الجدول نفسه بعد التطبيع: في كل عمود أصبحت أصغر قيمة 0.00 وأكبر قيمة 1.00، وهما مظللتان بدرجة أغمق، والقيم الأخرى بينهما

يُنجز البث ذلك في سطر واحد، باستخدام أصغر قيمة ونطاق خاصَّين بكل عمود:

X = np.array([[25, 52000],
              [61, 53000],
              [26, 55000],
              [40, 80000]])
lows = X.min(axis=0)
highs = X.max(axis=0)
scaled = (X - lows) / (highs - lows)

أصبح العمر يُحتسب الآن أيضًا. لم يعد أقرب جار للعميل 0 هو البالغ من العمر 61 عامًا:

العملاء بعد تحجيمهم كنقاط على مربع من 0 إلى 1، مع خطوط من العميل 0: البالغ من العمر 26 عامًا هو الأقرب عند 0.11، والبالغ من العمر 61 عامًا على بُعد 1.00، وذو الدخل البالغ $80,000 على بُعد 1.08

تصبح إحدى القيم المتطرفة 1، وتضغط بقية القيم لتصبح قريبة من 0، لذا يناسب التطبيع بين الحدين الأدنى والأقصى الأعمدة التي لا تحتوي على قيم متطرفة.

challenge icon

التحدي

متوسط

يطابق مُحمِّص القهوة بين أنواع القهوة التي تُحضَّر بطريقة متشابهة. كل صف من beans يمثل نوعًا من القهوة: درجة حرارة الماء (C)، ومدة التحضير (s)، وكمية الكافيين (mg). يقرأ البرنامج الموضعين i وj؛ وتقيس الدالة distance(a, b) الموجودة في الكود الابتدائي المسافة بين عينتين.

  1. طبّق التحجيم بطريقة الحد الأدنى والأقصى على beans.
  2. اطبع Every column from 0 to 1:، ثم الجدول بعد التحجيم مع منزلتين عشريتين.
  3. اطبع المسافة بينهما قبل التحجيم وبعده، كما هو موضح أدناه.

لثلاثة أنواع أخرى من القهوة، عند الموضعين 0 و1:

Every column from 0 to 1:
[[1.   1.   0.67]
 [0.5  0.5  0.  ]
 [0.   0.   1.  ]]
Coffees 0 and 1: 63.28 apart before scaling, 0.97 after

جرّب بنفسك

import numpy as np


# تعيد المسافة بين عينتين (من Why Scale Features)
def distance(a, b):
    return np.sqrt(((a - b) ** 2).sum())


# صف واحد لكل قهوة: درجة حرارة الماء بوحدة C، ومدة التحضير بالثواني، وكمية الكافيين بوحدة mg
beans = np.array([[88, 120, 60],
                  [96, 300, 30],
                  [86, 90, 70],
                  [94, 240, 120],
                  [90, 180, 90],
                  [84, 60, 50]])
i = int(input())
j = int(input())

# اكتب الكود الخاص بك أدناه
quiz iconاختبر نفسك

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

جميع دروس الإحصاء لتعلّم الآلة

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