Meezo ML نشر 25 يونيو 2021 أرسل تقرير نشر 25 يونيو 2021 عندما أحاول حساب مصفوفة ال confusion matrix أحصل على الخطأ التالي: ValueError: Multilabel-indicator is not supported for confusion matrix علماً أن البيانات التي أريد بناء المصفوفة عليها هي من الشكل (One-Hot): [[1, 0, 0,0,0,0], [0, 0, 1,0,0,0], [0, 0, 0,0,1,0], [0, 0, 0,0,1,0] ... ] اقتباس
1 Ali Haidar Ahmad نشر 25 يونيو 2021 أرسل تقرير نشر 25 يونيو 2021 لانستخدم الترميز One-Hot مع توابع حساب كفاءة النموذج في Sklearn. المشكلة في أن مصفوفة الCM لاتقبل أن تكون مدخلاتها من الشكل One-Hot، وإنما يجب أن تكون كالتالي: y_true (n_samples,) y_predict(n_samples,) وبالتالي لحل مشكلتك يجب أن لاتستخدم التحويل One-Hot مع المصفوفة CM. إذا أردت إرجاع بياناتك لشكلها الطبيعي (بدون ال One-Hot) يمكنك استخدام التابع argmax على للبيانات التي حولتها إلى الترميز One-Hot كالتالي: y=y.argmax(axis=1) ثم يمكنك حساب ال CM بدون مشاكل. إليك مثال: # هكذا تتوقع المصفوفة أن تكون مدخلاتها from sklearn.metrics import confusion_matrix y_true = [1, 1, 0, 2, 0, 1] y_pred = [1, 0, 2, 2, 0, 2] confusion_matrix(y_true, y_pred) 1 اقتباس
1 Yacine Marouf نشر 25 يونيو 2021 أرسل تقرير نشر 25 يونيو 2021 بالاطلاع على تعريف ال confusion matrix function من الرابط التالي https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html، يمكن ملاحظة أن الـ parameters: y_true, y_pred يجب أن تكون على شكل مصفوفة ذات بعد واحد. الحل هنا هو تحويل مصفوفتكم الـ One-Hot إلى مصفوفة ذات بعد واحد باستعمال argmax function: في مثالكم: [[1, 0, 0,0,0,0], [0, 0, 1,0,0,0], [0, 0, 0,0,1,0], [0, 0, 0,0,1,0] ... ] ستصبح: [0,2,4,4,...] يعني الكود سيكون مماثلا لـ: confusion_matrix(y_test.values.argmax(axis=1), predictions.argmax(axis=1)) أرجو أني استطعت أن أوضح الفكرة. بالتوفيق. اقتباس
السؤال
Meezo ML
عندما أحاول حساب مصفوفة ال confusion matrix أحصل على الخطأ التالي:
علماً أن البيانات التي أريد بناء المصفوفة عليها هي من الشكل (One-Hot):
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.