توزيع متوازن: كيفية تقسيم بيانات مراجعات أمازون بشكل فعال باستخدام Python و scikit-learn
في مواجهة هذا التحدي في تقسيم بيانات مراجعات منتجات أمازون بشكل متوازن، يبدو أنك تسعى لاستخدام مكتبة scikit-learn في Python لتحقيق هذا الهدف. لكن يبدو أن هناك بعض الأخطاء في الكود الحالي تحتاج إلى تصحيح.
أولاً، يجب أن تعرف أنك تحتاج إلى استخدام اسم العمود الصحيح الذي ترغب في تحقيق التوازن بناءً عليه، وفي حالتك هذا العمود هو “Categories”. ولكن يجب أن تقوم بتعيين “y” إلى قيم هذا العمود.
فيما يلي كيف يمكنك تعديل الكود لحل هذه المشكلة:
pythonimport pandas as pd
from sklearn.model_selection import train_test_split
# اقرأ البيانات من ملف CSV
meta = pd.read_csv('C:\\Users\\xyz\\Desktop\\WM Project\\Joined.csv')
# قم بتعيين العمود الذي تريد تحقيق التوازن بناءً عليه
y = meta['Categories']
# قم بتقسيم البيانات مع الحفاظ على التوازن باستخدام stratify
train, test = train_test_split(meta, test_size=0.2, stratify=y)
الآن، يجب أن يعمل الكود بشكل صحيح دون أي أخطاء. يتم استخدام stratify=y
للتأكد من أن الفئات في العمود “Categories” موزعة بشكل متوازن بين بيانات التدريب والاختبار.
بهذا الشكل، يمكنك أن تكون واثقًا أن التوازن النسبي للفئات سيتم الحفاظ عليه عند تقسيم بياناتك بنسبة 80-20 بين مجموعة التدريب ومجموعة الاختبار. يمكنك الآن استكشاف البيانات والقيام بتحليل أعمق لتحسين نموذج التدريب الخاص بك.
المزيد من المعلومات
بالطبع، دعنا نوسع على الموضوع ونقدم بعض المعلومات الإضافية التي قد تكون مفيدة لفهم السياق الكامل لتقسيم البيانات بشكل متوازن باستخدام scikit-learn في Python.
عند القيام بتقسيم البيانات إلى مجموعتين (تدريب واختبار) باستخدام train_test_split
، يكون من المهم أن يتم الاحتفاظ بتوزيع الفئات (التصنيفات) بشكل عادل بين كل منهما. هذا يساعد في تحسين أداء نموذج التعلم الآلي الخاص بك عندما تكون لديك فئات متعددة.
تحديد stratify=y
في train_test_split
يعني أن الدالة ستقوم بتوزيع البيانات بحيث تظل النسب النسبية للفئات ثابتة في كل مجموعة. وبهذا، يمكنك تجنب مشكلة تحقيق توازن غير متوازن بين مجموعات التدريب والاختبار، مما يؤدي إلى تحسين الأداء العام للنموذج.
من الناحية العملية، بعد قسم البيانات، يمكنك استخدام مكتبة pandas لاستكشاف البيانات وفهم توزيع الفئات في كل مجموعة. يمكن ذلك من خلال استخدام الأوامر مثل value_counts()
لفحص تواجد الفئات في عمود معين.
لاحظ أيضاً أن استخدام from sklearn.model_selection import train_test_split
هو الطريقة الصحيحة، حيث أن استخدام from sklearn.cross_validation import train_test_split
قد تم إزالته في إصدارات أحدث من scikit-learn.
في النهاية، من خلال فهم مبادئ توزيع البيانات وضبط التوازن بين الفئات، يمكنك الاستمتاع بتحليلاتك بشكل أعمق وتحسين النماذج الخاصة بك بشكل أفضل.