ฉันจะพอดีกับประเภทข้อมูลเด็ดขาดสำหรับการจำแนกป่าแบบสุ่มได้อย่างไร


12

ฉันต้องการค้นหาความถูกต้องของชุดข้อมูลการฝึกอบรมโดยใช้ Random Forest Algorithm แต่ประเภทของชุดข้อมูลของฉันมีทั้งหมวดหมู่และตัวเลข เมื่อฉันพยายามที่จะพอดีกับข้อมูลเหล่านั้นฉันได้รับข้อผิดพลาด

'อินพุตมี NaN อินฟินิตี้หรือค่ามีขนาดใหญ่เกินไปสำหรับ dtype (' float32 ')'

อาจเป็นปัญหาสำหรับประเภทข้อมูลวัตถุ ฉันจะพอดีกับข้อมูลที่เป็นหมวดหมู่โดยไม่มีการแปลงเพื่อใช้ RF ได้อย่างไร

นี่คือรหัสของฉัน

ภาพหน้าจอ

ภาพหน้าจอ

ภาพหน้าจอ


คุณไม่จำเป็นต้องดำเนินการ one_hot หากคุณใช้โมเดลต้นไม้เพราะไม่ได้วัดระยะทางเหมือนกับวิธีอื่น
Jun Yang

1
@JunYang, scikit-Learn ปัจจุบันจำเป็นต้องมีการเข้ารหัสหมวดหมู่
Ben Reiniger

คำตอบ:


11

คุณต้องแปลงคุณสมบัติที่เป็นหมวดหมู่ให้เป็นแอตทริบิวต์ที่เป็นตัวเลข วิธีการทั่วไปคือการใช้การเข้ารหัสแบบร้อนแรง แต่นั่นไม่ใช่ตัวเลือกเดียวเท่านั้น หากคุณมีตัวแปรที่มีระดับหมวดหมู่จำนวนมากคุณควรพิจารณารวมระดับหรือใช้เคล็ดลับการแปลงแป้นพิมพ์ Sklearn มาพร้อมกับวิธีการหลายวิธี (ตรวจสอบในส่วน "ดูเพิ่มเติม"): One Hot EncoderและHashing Trick

หากคุณไม่ได้มุ่งมั่นที่จะ sklearn การใช้ฟอเรสต์แบบสุ่ม h2oจะจัดการกับคุณสมบัติเด็ดขาดโดยตรง


0

มีปัญหาในการรับข้อผิดพลาดประเภทนี้เท่าที่ฉันรู้ สิ่งแรกคือในชุดข้อมูลของฉันมีพื้นที่เพิ่มเติมว่าทำไมการแสดงข้อผิดพลาด 'อินพุตมีค่า NAN ประการที่สองหลามไม่สามารถทำงานกับค่าวัตถุประเภทใดก็ได้ เราจำเป็นต้องแปลงค่าวัตถุนี้เป็นค่าตัวเลข สำหรับการแปลงวัตถุเป็นตัวเลขนั้นมีอยู่สองกระบวนการเข้ารหัส: Label encoder และ One hot encoder ตำแหน่งที่ encoder เข้ารหัสเข้ารหัสค่าวัตถุระหว่าง 0 ถึง n_classes-1 และหนึ่งค่าเข้ารหัสร้อนระหว่าง 0 และ 1 ในงานของฉันก่อนที่จะปรับข้อมูลของฉันสำหรับวิธีการจำแนกประเภททุกประเภทฉันใช้ตัวเข้ารหัสฉลากสำหรับการแปลงค่าและก่อนการแปลงฉันรับรองว่า ไม่มีที่ว่างในชุดข้อมูลของฉัน

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