ฉันคิดว่า M0rkHaV มีความคิดที่ถูกต้อง Scikit การเรียนรู้ของระดับท่อเป็นเครื่องมือที่มีประโยชน์สำหรับการห่อหุ้มหม้อแปลงที่แตกต่างกันหลายควบคู่ไปกับการประมาณการเป็นหนึ่งในวัตถุเพื่อที่คุณจะต้องเรียกวิธีการสำคัญของคุณอีกครั้ง ( fit()
, predict()
ฯลฯ ) มาแบ่งองค์ประกอบหลักสองส่วน:
หม้อแปลงชั้นเรียนที่ใช้ทั้งในและfit()
transform()
คุณอาจจะคุ้นเคยกับบางส่วนของ sklearn preprocessing เครื่องมือเช่นและTfidfVectorizer
Binarizer
หากคุณดูเอกสารสำหรับเครื่องมือก่อนการประมวลผลเหล่านี้คุณจะเห็นว่าพวกเขาใช้ทั้งสองวิธีนี้ สิ่งที่ฉันคิดว่าค่อนข้างเจ๋งก็คือตัวประมาณค่าบางตัวสามารถใช้เป็นขั้นตอนการเปลี่ยนแปลงได้เช่นกันLinearSVC
!
ประมาณค่าเรียนที่ใช้ทั้งในและfit()
predict()
คุณจะพบว่าลักษณนามและแบบจำลองการถดถอยจำนวนมากใช้ทั้งสองวิธีนี้และด้วยเหตุนี้คุณจึงสามารถทดสอบแบบจำลองต่างๆได้อย่างง่ายดาย เป็นไปได้ที่จะใช้หม้อแปลงอื่นเป็นตัวประมาณค่าขั้นสุดท้าย (กล่าวคือไม่จำเป็นต้องใช้predict()
แต่ต้องใช้อย่างแน่นอนfit()
) ทั้งหมดนี้หมายความว่าคุณจะไม่สามารถโทรpredict()
ได้
สำหรับการแก้ไขของคุณ: มาดูตัวอย่างแบบข้อความ เมื่อใช้ LabelBinarizer เราต้องการเปลี่ยนรายการป้ายกำกับให้เป็นรายการค่าไบนารี
bin = LabelBinarizer() #first we initialize
vec = ['cat', 'dog', 'dog', 'dog'] #we have our label list we want binarized
ตอนนี้เมื่อ binarizer พอดีกับข้อมูลบางอย่างมันจะมีโครงสร้างที่เรียกว่าclasses_
ซึ่งมีคลาสเฉพาะที่หม้อแปลง 'รู้' หากไม่เรียกfit()
binarizer ก็ไม่รู้ว่าข้อมูลมีลักษณะอย่างไรดังนั้นการโทรtransform()
จึงไม่สมเหตุสมผล กรณีนี้จะเกิดขึ้นจริงหากคุณพิมพ์รายชื่อคลาสก่อนที่จะพยายามใส่ข้อมูล
print bin.classes_
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อลองสิ่งนี้:
AttributeError: 'LabelBinarizer' object has no attribute 'classes_'
แต่เมื่อคุณพอดีกับ binarizer ในvec
รายการ:
bin.fit(vec)
แล้วลองอีกครั้ง
print bin.classes_
ฉันได้รับสิ่งต่อไปนี้:
['cat' 'dog']
print bin.transform(vec)
และตอนนี้หลังจากเรียกการแปลงร่างบนvec
วัตถุแล้วเราจะได้รับสิ่งต่อไปนี้:
[[0]
[1]
[1]
[1]]
สำหรับตัวประมาณที่ใช้เป็นหม้อแปลงให้เราใช้DecisionTree
ลักษณนามเป็นตัวอย่างของตัวแยกคุณลักษณะ ต้นไม้ตัดสินใจนั้นยอดเยี่ยมด้วยเหตุผลหลายประการ แต่สำหรับจุดประสงค์ของเราสิ่งที่สำคัญคือพวกมันมีความสามารถในการจัดอันดับคุณสมบัติที่ต้นไม้พบว่ามีประโยชน์สำหรับการทำนาย เมื่อคุณเรียกtransform()
บนต้นไม้การตัดสินใจก็จะใช้การป้อนข้อมูลของคุณและหาสิ่งที่มันคิดว่าเป็นคุณสมบัติที่สำคัญที่สุด ดังนั้นคุณสามารถคิดว่ามันเปลี่ยนเมทริกซ์ข้อมูลของคุณ (n แถวตามคอลัมน์ m) เป็นเมทริกซ์ที่เล็กกว่า (n แถวตาม k คอลัมน์) โดยที่คอลัมน์ k เป็นคุณสมบัติที่สำคัญที่สุดของโครงสร้างการตัดสินใจที่พบ