แหล่งข้อมูลที่ระบุโดยผู้อื่นล้วนมีประโยชน์อย่างแน่นอน แต่ฉันจะพูดสอดและเพิ่มสิ่งต่อไปนี้ตัวแยกประเภท "ดีที่สุด" น่าจะเป็นบริบทและข้อมูลเฉพาะ ในการจู่โจมเมื่อเร็ว ๆ นี้เพื่อประเมินตัวแยกประเภทไบนารีที่แตกต่างกันฉันพบต้นไม้ที่ได้รับการส่งเสริมให้ทำงานได้ดีกว่าวิธีอื่น ๆ ที่ฉันเคยเข้าถึง สิ่งสำคัญสำหรับฉันคือการเรียนรู้วิธีใช้เครื่องมือขุดข้อมูลออเรนจ์ พวกเขามีเอกสารที่ดีในการเริ่มต้นสำรวจวิธีการเหล่านี้กับข้อมูลของคุณ ตัวอย่างเช่นต่อไปนี้เป็นสคริปต์ Python สั้น ๆ ที่ฉันเขียนเพื่อประเมินคุณภาพของตัวแยกประเภทหลายตัวสำหรับการวัดความแม่นยำหลายระดับโดยใช้การตรวจสอบความถูกต้องของ k-fold
import orange, orngTest, orngStat, orngTree , orngEnsemble, orngSVM, orngLR
import numpy as np
data = orange.ExampleTable("performance_orange_2.tab")
bayes = orange.BayesLearner(name="Naive Bayes")
svm = orngSVM.SVMLearner(name="SVM")
tree = orngTree.TreeLearner(mForPruning=2, name="Regression Tree")
bs = orngEnsemble.BoostedLearner(tree, name="Boosted Tree")
bg = orngEnsemble.BaggedLearner(tree, name="Bagged Tree")
forest = orngEnsemble.RandomForestLearner(trees=100, name="Random Forest")
learners = [bayes, svm, tree, bs, bg, forest]
results = orngTest.crossValidation(learners, data, folds=10)
cm = orngStat.computeConfusionMatrices(results,
classIndex=data.domain.classVar.values.index('1'))
stat = (('ClsAcc', 'CA(results)'),
('Sens', 'sens(cm)'),
('Spec', 'spec(cm)'),
('AUC', 'AUC(results)'),
('Info', 'IS(results)'),
('Brier', 'BrierScore(results)'))
scores = [eval("orngStat." + s[1]) for s in stat]
print "Learner " + "".join(["%-9s" % s[0] for s in stat])
print "-----------------------------------------------------------------"
for (i, L) in enumerate(learners):
print "%-15s " % L.name + "".join(["%5.3f " % s[i] for s in scores])
print "\n\n"
measure = orngEnsemble.MeasureAttribute_randomForests(trees=100)
print "Random Forest Variable Importance"
print "---------------------------------"
imps = measure.importances(data)
for i,imp in enumerate(imps):
print "%-20s %6.2f" % (data.domain.attributes[i].name, imp)
print '\n\n'
print 'Predictions on new data...'
bs_classifier = bs(data)
new_data = orange.ExampleTable('performance_orange_new.tab')
for obs in new_data:
print bs_classifier(obs, orange.GetBoth)
เมื่อฉันเรียกใช้รหัสนี้ในข้อมูลของฉันฉันได้รับผลลัพธ์เช่น
In [1]: %run binary_predict.py
Learner ClsAcc Sens Spec AUC Info Brier
-----------------------------------------------------------------
Naive Bayes 0.556 0.444 0.643 0.756 0.516 0.613
SVM 0.611 0.667 0.714 0.851 0.264 0.582
Regression Tree 0.736 0.778 0.786 0.836 0.945 0.527
Boosted Tree 0.778 0.778 0.857 0.911 1.074 0.444
Bagged Tree 0.653 0.667 0.786 0.816 0.564 0.547
Random Forest 0.736 0.667 0.929 0.940 0.455 0.512
Random Forest Variable Importance
---------------------------------
Mileage 2.34
Trade_Area_QI 2.82
Site_Score 8.76
ยังมีอะไรอีกมากมายที่คุณสามารถทำกับวัตถุสีส้มเพื่อใคร่ครวญประสิทธิภาพและทำการเปรียบเทียบ ฉันพบว่าแพคเกจนี้มีประโยชน์อย่างมากในการเขียนโค้ดจำนวนเล็กน้อยเพื่อใช้วิธีการกับข้อมูลของฉันด้วย API ที่สอดคล้องกันและปัญหาที่เป็นนามธรรม (เช่นฉันไม่จำเป็นต้องใช้แพ็กเกจที่แตกต่างกันหกชุดจากผู้เขียนที่ต่างกันหกคน แนวทางการออกแบบและเอกสาร API ฯลฯ )