เกณฑ์การจำแนกประเภทใน RandomForest-sklearn


9

1) ฉันจะเปลี่ยนเกณฑ์การจำแนกได้อย่างไร (ฉันคิดว่าเป็น 0.5 โดยค่าเริ่มต้น) ใน RandomForest ใน sklearn

2) ฉันจะตัวอย่างน้อยใน sklearn ได้อย่างไร

3) ฉันมีผลลัพธ์ต่อไปนี้จากลักษณนาม RandomForest: [[1635 1297] [520 3624]]

         precision    recall  f1-score   support

class 0       0.76      0.56      0.64      2932
class 1       0.74      0.87      0.80      4144

เฉลี่ย / รวม 0.75 0.74 0.73 7076

ก่อนข้อมูลไม่สมดุล (30% จากคลาส 0 และ 70% จากคลาส -1) ดังนั้นฉันคิดว่าตัวจําแนกมีแนวโน้มที่จะลำเอียงมากขึ้นสำหรับความหมายระดับ 1 ย้ายบางส่วนจากคลาส 0 ไปเป็นคลาส 1 ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ถ้าการสุ่มตัวอย่างสามารถช่วยได้? หรือเปลี่ยนเกณฑ์การจำแนกประเภท?

อัปเดต: class-0 มี 40% ของประชากรในขณะที่ class-1 คือ 60% อย่างไรก็ตามการเลื่อนจาก class-0 ถึง class-1 (1297) นั้นสูงในขณะที่ฉันต้องการให้มันลดลง

คำตอบ:


7

คุณสามารถห่อฟอเรสต์แบบสุ่มในคลาสที่predictเมธอดที่เรียกpredict_probaเมธอดของฟอเรสต์แบบสุ่มภายในและคลาสเอาต์พุต 1 เฉพาะในกรณีที่สูงกว่าขีด จำกัด ที่กำหนดเอง

อีกทางหนึ่งคุณสามารถตั้งค่าอัลกอริทึมการฝึกอบรมโดยส่งตัวอย่างที่สูงขึ้นsample_weightจากกลุ่มชนกลุ่มน้อย


ขอบคุณ ฉันกำลังคิดเกี่ยวกับการเพิ่มน้ำหนักสำหรับชั้นเรียนย่อย อย่างไรก็ตามฉันไม่เห็นอะไรเลยในตัวแยกประเภทแบบสุ่มของฟอเรสต์ (มีอยู่ในตัวนับเหรียญสิงคโปร์)
Big Data Lover

วิธีการแบบพอดียอมรับsample_weightพารามิเตอร์ (หนึ่งน้ำหนักต่อพารามิเตอร์) ที่มีความยืดหยุ่นมากและทำให้สามารถจำลองได้class_weight(หนึ่งน้ำหนักต่อคลาสเป้าหมาย)
ogrisel

ขอบคุณ เมื่อฉันใช้ clf = clf.fit (X, Y, sample_weight = preprocessing.balance_weights (y) มันให้ฉัน ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศพร้อมกับรูปร่าง y เป็นไบนารี 0/1
คนรักข้อมูลขนาดใหญ่

รูปร่างของyคืออะไร? ทำไมคุณถึงแตกต่างYและy?
ogrisel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.