คำนวณ ROC AUC ด้วยฟอเรสต์แบบสุ่ม

ฉันใช้ตัวแยกประเภทฟอเรสต์แบบสุ่มในปัญหาหลายคลาส

rf = RandomForestClassifier(()
rf.fit(train_X, train_y)

แล้วสำหรับการทำนาย:

pred = rf.predict(test_X)

ดังนั้นฉันต้องการคำนวณ roc_auc_score ดังนี้:

roc_value = roc_auc_score(test_y, pred, average='weighted', 
    multi_class='ovr',labels=[0,1,2,3,4])

แต่สิ่งนี้ทำให้เกิดข้อผิดพลาด:

numpy.AxisError: axis 1 is out of bounds for array of dimension 1

ฉันจะแก้ไขปัญหานี้ได้อย่างไร?


person super_ask    schedule 15.03.2021    source แหล่งที่มา


คำตอบ (1)


หากคุณสนใจ ROC AUC pred จะต้องมีความน่าจะเป็น ไม่ใช่ป้ายกำกับที่คาดการณ์ ในกรณีของคุณ มันเป็นปัญหาการจำแนกประเภทหลายคลาส ดังนั้น pred จะต้องเป็นเมทริกซ์ที่มีรูปร่าง (n_samples, n_classes) หากต้องการรับมัน คุณเพียงแค่ต้องใช้ predict_proba แทน predict:

pred = rf.predict_proba(test_X)
person MaximeKan    schedule 15.03.2021