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

الترميز أحادي الواحد

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

لا ترتيب للآلات الموسيقية: فإذا رُقّمت 1 و2 و3، فسيُعدّ البيانو أكبر من الطبول. يمنح الترميز أحاديّ التمثيل كل فئة عمودًا خاصًا بها بقيمة 0 أو 1 بدلًا من ذلك:

تتحول آلات أربعة تلاميذ الموسيقية، البيانو والطبول والبيانو والتشيلو، إلى ثلاثة أعمدة باسم التشيلو والطبول والبيانو: يحتوي كل صف على 1 واحدة في عمود آلته الموسيقية، وعلى 0 في الأعمدة الأخرى، بينما يمر عمود الأسابيع كما هو

تقوم pd.get_dummies بذلك، ويطلب dtype=int استخدام 1 و0 بدلًا من True وFalse:

pupils = pd.DataFrame({"instrument": ["piano", "drums", "piano", "cello"],
                       "weeks": [4, 3, 6, 10]})
encoded = pd.get_dummies(pupils, columns=["instrument"], dtype=int)
print(encoded)

يطبع هذا:

   weeks  instrument_cello  instrument_drums  instrument_piano
0      4                 0                 0                 1
1      3                 0                 1                 0
2      6                 0                 0                 1
3     10                 1                 0                 0

تُضاف الأعمدة الجديدة في النهاية، عمودًا لكل قيمة وبترتيب أبجدي. والتكلفة هي زيادة العرض: فوجود 500 قيمة مختلفة سيضيف 500 عمود.

challenge icon

التحدي

متوسط

يعرض موقع للعطلات أكواخًا في cabins.csv. يقرأ البرنامج اسم عمود، إما area أو heat. يحوّله البرنامج الأساسي إلى أرقام لربطه بالسعر، لكن لا ترتيب لأيٍّ من العمودين: قيمة r هذه مختلقة.

  1. استبدل أسطره: شفّر العمود باستخدام الترميز الأحادي (0 و1).
  2. اطبع عدد الأعمدة التي أصبح إليها، ثم كل عمود جديد مع عدد القيم 1 فيه.

لخمسة أكواخ ومع الإدخال heat:

heat became 2 columns:
heat_gas: 3 cabins
heat_wood: 2 cabins

جرّب بنفسك

import pandas as pd

cabins = pd.read_csv("cabins.csv")
column = input()

# اكتب الكود الخاص بك أدناه
# تُسنِد هذه الأسطر أرقامًا للمناطق وأنواع التدفئة، فتفرض عليها ترتيبًا ليس لها: استبدلها
numbers = {"coast": 1, "hills": 2, "lake": 3, "woods": 4, "gas": 1, "solar": 2, "wood": 3}
cabins[column] = cabins[column].map(numbers)
print(f"{column} against price: r = {round(cabins[column].corr(cabins['price']), 2)}")
quiz iconاختبر نفسك

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

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

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