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

الأعمدة المختلطة

جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 46 من 58.

تمزج معظم الجداول بين الكلمات والأرقام، ويحتاج كل نوع إلى خطوته الخاصة. يرسل ColumnTransformer كل عمود إلى خطوته ويجمع النتائج:

رسم تخطيطي بعنوان 4 أعمدة داخلة، و7 أعمدة خارجة. ثلاثة أسطوانات فينيل مع النوع والحالة والسعر والسنة. يمر النوع والحالة عبر OneHotEncoder إلى خمسة أعمدة 0/1: jazz وrock وgood وmint وworn. يمر السعر والسنة عبر StandardScaler إلى عمودين بمقياس موحّد

لمتجر تسجيلات، في الشيفرة:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

prep = ColumnTransformer([
    ("words", OneHotEncoder(), ["genre", "condition"]),
    ("numbers", StandardScaler(), ["price", "year"]),
])
pipe = make_pipeline(prep, LogisticRegression(max_iter=1000))

كل إدخال هو اسم وخطوة وأعمدته. بخلاف get_dummies، يحتفظ المُرمِّز بفئات بيانات التدريب، لذا يحصل السجل الجديد على الأعمدة السبعة نفسها.

challenge icon

التحدي

متوسط

يريد نادٍ للشطرنج معرفة فرصة فوز كل لاعب قبل المباراة. يقسّم البرنامج الابتدائي chess.csv ويقرأ بيانات مباراة الليلة.

  1. شفّر opening وcolor، وقيّس rating_gap وminutes، واطبع عدد الأعمدة الناتجة من صفوف التدريب.
  2. اربط ذلك بالانحدار اللوجستي، ودرّب النموذج، واطبع دقة الاختبار.
  3. اطبع فرصة الفوز في مباراة الليلة.

نادٍ آخر، وثلاثة افتتاحيات، وsicilian، وblack، و50، و15:

Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66

جرّب بنفسك

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

# مباريات نادٍ للشطرنج: الافتتاحية، ولون اللاعب، وتصنيفه مطروحًا منه
# تصنيف خصمه، والدقائق المتبقية على الساعة، وما إذا كان اللاعب قد فاز (1) أم لا (0)
games = pd.read_csv("chess.csv")
X = games[["opening", "color", "rating_gap", "minutes"]]
y = games["won"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# مباراة الليلة، صف واحد بالأعمدة نفسها
game = pd.DataFrame({"opening": [input()], "color": [input()],
                     "rating_gap": [int(input())], "minutes": [int(input())]})

# اكتب شيفرتك أدناه
quiz iconاختبر نفسك

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

جميع دروس التعلّم الخاضع للإشراف

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