กระตุ้นการตัดสินใจต้นไม้ในหลาม? [ปิด]


13

มีห้องสมุดไพ ธ อนที่ดีสำหรับการฝึกอบรมต้นไม้ตัดสินใจหรือไม่


3
Rpy แน่นอน ;-)

ฉันเห็นด้วยกับ mbq มีเหตุผลที่ดีมากที่คุณต้องทำใน Python หรือไม่? มิฉะนั้นฉันก็จะใช้ workhorse R เป็น back-end เช่นกัน
Joris Meys

เหตุผลเดียวที่ฉันใช้ R เพียงไม่กี่ครั้งต่อปีหรือมากกว่านั้นและงูใหญ่ที่ฉันใช้อยู่ทุกวัน ...
Andre Holzner

2
Rpy เป็นการพึ่งพาที่น่ารังเกียจจริงๆ R มีฟีเจอร์มากมายและมันก็ดีที่คุณสามารถขุดมันโดยใช้ Rpy ได้ แต่ถ้าคุณต้องแชร์งานนั้นคุณอาจมีปัญหาแม้ว่ามันจะอยู่ในคอมพิวเตอร์ต่าง ๆ ในห้องแล็บเดียวกันก็ตาม หากห้องปฏิบัติการของคุณอยู่ในสภาพแวดล้อมการคำนวณที่แตกต่างกัน นี่เป็นเพราะความจริงที่ว่า Rpy ขึ้นอยู่กับการมีรุ่นรองของ Python, numpy และ R อย่างถูกต้องตัวอย่างเช่นมันจะถูกทำลายในการกระจาย Linux ที่สำคัญ
Gael Varoquaux

3
คำตอบที่นี่ดูเหมือนล้าสมัย - ดูเหมือนว่าพวกเขามาจากช่วงเวลาที่ scikit.learn เป็นจุดเริ่มต้น ฉันคิดว่าผู้อ่านและไซต์จะได้รับประโยชน์หากใครมีความรู้ให้คำตอบที่อัปเดตแล้ว
Pere

คำตอบ:


5

อัปเดตคำตอบ

ภูมิทัศน์มีการเปลี่ยนแปลงมากมายและคำตอบก็ชัดเจนในปัจจุบัน:

  • scikit เรียนรู้เป็นห้องสมุดในหลามและมีขั้นตอนวิธีการที่ดีหลายประการสำหรับต้นไม้ตัดสินใจเพิ่มขึ้น
  • โครงสร้างการตัดสินใจที่ดีที่สุดในไพ ธ อนนั้นเป็นการใช้งานXGBoost

อัปเดต 1

  • ในขณะเดียวกันLightGBMแม้ว่าจะยังค่อนข้าง "ใหม่" ดูเหมือนว่าจะดีเท่า ๆ กันหรือดีกว่าXGBoost

12

รูปลักษณ์แรกของฉันคือสีส้มซึ่งเป็นแอพที่มีคุณสมบัติครบถ้วนสำหรับ ML โดยมีแบ็กเอนด์ใน Python ดูเช่นorngEnsemble

โครงการมีแนวโน้มที่อื่น ๆ ที่มีmlpyและscikit.learn

ฉันรู้ว่าPyCVมีขั้นตอนการเพิ่มประสิทธิภาพหลายอย่าง แต่ไม่ชัดเจนสำหรับรถเข็น ลองดูที่MLboost


7

คุณสามารถใช้ไลบรารีแผนผังการตัดสินใจ R โดยใช้ Rpy (http://rpy.sourceforge.net/) ตรวจสอบบทความ "การสร้างแผนภูมิการตัดสินใจโดยใช้ python" (http: //onlamp.com/pub/a/python/2 ... )

นอกจากนี้ยังมี

http://opencv.willowgarage.com/documentation/index.html

http://research.engineering.wustl.edu/~amohan/


6

ผมมีความสำเร็จที่ดีกับผู้เรียนที่มีต้นไม้ที่อยู่ในนม: เครื่องการเรียนรู้เครื่องมือสำหรับงูหลาม ดูเหมือนว่าจะอยู่ภายใต้การพัฒนาที่ใช้งานอยู่ แต่เอกสารนั้นค่อนข้างกระจัดกระจายเมื่อฉันใช้งาน ชุดทดสอบ (github.com/luispedro/milk/blob/master/tests/test_adaboost.py) มี "ตอแบบเร่ง" ซึ่งอาจทำให้คุณทำงานได้เร็วขึ้น:

import numpy as np
import milk.supervised.tree
import milk.supervised.adaboost

def test_learner():
    from milksets import wine
    learner = milk.supervised.adaboost.boost_learner(milk.supervised.tree.stump_learner())
    features, labels = wine.load()
    features = features[labels < 2]
    labels = labels[labels < 2] == 0
    labels = labels.astype(int)
    model = learner.train(features, labels)
    train_out = np.array(map(model.apply, features))
    assert (train_out == labels).mean() > .9

4
ฉันพัฒนานม หากคุณพบปัญหาใด ๆ โปรดแจ้งให้เราทราบทางอีเมล (lpc ที่ cmu dot edu) โดยทั่วไปแล้วรายงานข้อผิดพลาดจะได้รับการแก้ไขในไม่เกิน 24 ชั่วโมง
luispedro

ในขณะเดียวกันฉันได้เพิ่มเอกสารอีกเล็กน้อยเกี่ยวกับ adaboost: packages.python.org/milk/adaboost.htmlดังนั้นความคิดเห็นด้านบนอาจไม่ถูกต้องกว่าที่ผ่านมา
luispedro

4

scikit เรียนรู้ในขณะนี้มีการถดถอยที่ดี (และการจัดหมวดหมู่) ต้นไม้และป่าสุ่มการใช้งาน อย่างไรก็ตามต้นไม้ที่ได้รับการปรับปรุงยังไม่รวมอยู่ ผู้คนกำลังทำงานอยู่ แต่ใช้เวลาสักครู่เพื่อให้เกิดการใช้งานที่มีประสิทธิภาพ

คำเตือน: ฉันเป็นนักพัฒนาเรียนรู้ scikit


1

JBoostเป็นห้องสมุดที่ยอดเยี่ยม มันไม่ได้เขียนใน Python แน่นอน แต่มันเป็นภาษาที่ไม่เชื่อเรื่องพระเจ้าเพราะมันสามารถเรียกใช้งานจากบรรทัดคำสั่งและดังนั้นจึงสามารถ "ขับเคลื่อน" จาก Python ฉันเคยใช้มันในอดีตและชอบมันมากโดยเฉพาะเรื่องการสร้างภาพ


1

ฉันมีปัญหาเดียวกันในขณะนี้: ฉันเขียนโค้ดใน Python ทุกวันใช้ R นาน ๆ และต้องการอัลกอริทึมการถดถอยแบบเพิ่มขึ้นที่ดี ในขณะที่มีแพ็คเกจ Python ที่ยอดเยี่ยมมากมายสำหรับการวิเคราะห์ขั้นสูงการค้นหาของฉันไม่พบข้อเสนอที่ดีสำหรับอัลกอริทึมนี้โดยเฉพาะ ดังนั้นเส้นทางที่ฉันคิดว่าฉันจะได้รับในสัปดาห์ที่ผ่านมาคือการใช้แพคเกจ GBM ใน R มีกระดาษที่ดีที่แสดงให้เห็นปัญหาในทางปฏิบัติเกี่ยวกับการใช้มันที่สามารถพบได้คือที่นี่ ที่สำคัญแพคเกจ GBM ถูกใช้เป็นพื้น "ปิดการเก็บรักษา" เพื่อ W 2009 KDD ถ้วย ดังนั้นฉันอาจทำแบบจำลองก่อนและหลังทั้งหมดของฉันใน Python และใช้ RPy เพื่อกลับไปกลับมาด้วย R / GBM


0

ฉันเคยเจอสถานการณ์แบบเดียวกันกับคุณฉันพบว่าออเร้นจ์ยากที่จะปรับ (อาจเป็นปัญหาของฉัน) ในท้ายที่สุดฉันใช้รหัสของ Peter Norivig สำหรับหนังสือที่มีชื่อเสียงของเขาในนั้นเขาได้จัดทำกรอบรหัสที่เขียนขึ้นอย่างดีสำหรับต้นไม้สิ่งที่คุณต้องมีก็คือการเพิ่มการส่งเสริม ด้วยวิธีนี้คุณสามารถเขียนโค้ดอะไรก็ได้ที่คุณชอบ


0

Decision Trees - Ada Boosting

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score

ต้นไม้การตัดสินใจที่ไม่มีการส่งเสริม

clf_entropy_no_ada = DecisionTreeClassifier(criterion = "entropy", random_state = 100,
 max_depth=5, min_samples_leaf=5)
clf_entropy_no_ada.fit(X_train, y_train)

ต้นไม้ตัดสินใจด้วย Ada Boosting

clf_entropy_ada = AdaBoostClassifier(base_estimator= clf_entropy_no_ada,n_estimators=400,learning_rate=1)
clf_entropy_ada.fit(X_train, y_train)

รูปแบบที่เหมาะสมและการคำนวณความแม่นยำ

y_predict_no_ada = clf_entropy_no_ada.predict(X_test)
print ("Accuracy is ", accuracy_score(y_test,y_predict_no_ada)*100)

y_predict_ada = clf_entropy_ada.predict(X_test)
print ("Accuracy is ", accuracy_score(y_test,y_predict_ada)*100)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.