اذهب إلى المحتوى

السؤال

نشر

السلام عليكم

ده الكود

categorical_cols = data_train[['orientation', 'behavior', 'phase', 'gesture']]

encoded_df = pd.DataFrame(
    encoded.toarray().astype(int), 
    columns=encoder.get_feature_names_out(categorical_cols.columns)
)


data_encoded = pd.concat([data_train.drop(categorical_cols.columns, axis=1).reset_index(drop=True),
                          encoded_df.reset_index(drop=True)], axis=1)

 

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

بتاريخ 7 دقائق مضت قال Ali Ahmed55:
categorical_cols = data_train[['orientation', 'behavior', 'phase', 'gesture']]

في هذا السطر نقوم بإستخراج الأعمدة ذات القيم الفئوية (categorical) من البيانات الأصلية data_train وتلك الأعمدة هي: orientation و behavior و phase و gesture.

بتاريخ 15 دقائق مضت قال Ali Ahmed55:
encoded_df = pd.DataFrame(
    encoded.toarray().astype(int), 
    columns=encoder.get_feature_names_out(categorical_cols.columns)
)

هنا المتغير encode غير واضح لأنه لا يظهر في الكود المرفق ولكن غالبا هو ناتج من تحويل الأعمدة الفئوية إلى تمثيل رقمي باستخدام أداة ك OneHotEncoder ومن ثم يتم تحويل الناتج إلى مصفوفة NumPy  من خلال toarray() ثم إلى أعداد صحيحة من خلال astype(int) .

وهنا يتم إنشاء DataFrame جديد في المتغير encoded_df من هذه البيانات المشفرة في المتغير encoded ومن ثم تحديد أسماء الأعمدة الناتجة باستخدام encoder.get_feature_names_out .

بتاريخ 20 دقائق مضت قال Ali Ahmed55:
data_encoded = pd.concat([data_train.drop(categorical_cols.columns, axis=1).reset_index(drop=True),
                          encoded_df.reset_index(drop=True)], axis=1)
 

وأخيرا يتم حذف الأعمدة الأصلية الفئوية من data_train وهي الأعمدة التي حددناها في المتغير categorical_cols . ومن ثم يتم دمج الأعمدة الجديدة المشفرة encoded_df مع باقي البيانات.و يتم استخدام reset_index(drop=True) لضمان تناسق الفهارس بين DataFrames قبل الدمج.

إذا الكود بإختصار يقوم بإستخراج الأعمدة الفئوية من البيانات ومن ثم تشفير هذه الأعمدة وأخيرا دمج الأعمدة المشفرة مع بقية البيانات بعد حذف الأعمدة الأصلية.

أما بخصوص تحسينه فلو قصدت جعل الكود أسهل في القراءة فإليك التالي :

# استخراج الأعمدة الفئوية
categorical_cols = ['orientation', 'behavior', 'phase', 'gesture']
X_cat = data_train[categorical_cols]

# تشفير البيانات الفئوية
encoded_array = encoder.transform(X_cat).toarray()
encoded_columns = encoder.get_feature_names_out(categorical_cols)
encoded_df = pd.DataFrame(encoded_array.astype(int), columns=encoded_columns)

# حذف الأعمدة الفئوية من البيانات الأصلية
X_num = data_train.drop(columns=categorical_cols).reset_index(drop=True)

# دمج البيانات الرقمية مع البيانات المشفرة
data_encoded = pd.concat([X_num, encoded_df], axis=1)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...