2011-05-26 7 views
6

क्या किसी को भी WEKA API का उपयोग कर डेटा से बेयसियन नेटवर्क सीखने के लिए "उचित" प्रक्रिया पता है? मुझे WEKA दस्तावेज़ में अच्छे निर्देश नहीं मिल रहे हैं।WEKA API के साथ Bayesian नेटवर्क (संरचना + पैरामीटर) कैसे सीखें?

प्रलेखन और उनमें से प्रत्येक समारोह "माना जाता है" करने के लिए के आधार पर, मैंने सोचा था कि यह काम करेगा:

Instances ins = DataSource.read(filename); 
ins.setClassIndex(0); 

K2 learner = new K2(); 

MultiNomialBMAEstimator estimator = new MultiNomialBMAEstimator(); 
estimator.setUseK2Prior(true); 

EditableBayesNet bn = new EditableBayesNet(ins); 
bn.initStructure(); 

learner.buildStructure(bn, ins); 
estimator.estimateCPTs(bn); 

लेकिन ऐसा नहीं है। मैंने यह और अन्य विविधताओं की कोशिश की है और मैं ArrayIndexOutOfBoundsException या NullPointerException कहीं भी WEKA कोड के अंदर प्राप्त कर रहा हूं, तो मुझे क्या याद आ रही है?

+0

मैं Bayesian नेटवर्क के साथ शुरू करने के लिए संसाधनों की तलाश में था। आपके द्वारा उल्लिखित वेबका एपीआई पर एक नज़र डालेंगे। – r3st0r3

+0

क्या WEKA GUI स्वयं एपीआई का उपयोग करता है? यदि ऐसा है, तो आप इसे एक उदाहरण के रूप में उपयोग कर सकते हैं। आप स्रोत कोड पर एक झलक भी देख सकते हैं यह देखने के लिए कि इसमें से कोई भी समझ में आता है या नहीं। –

उत्तर

5

यह मेरे लिए काम करता है। मैं डेटा के निम्नलिखित सेट के साथ करने की कोशिश की:

@relation test 

@attribute x {0,1} 
@attribute y {0,1,2} 
@attribute z {0,1} 

@data 
0,1,0 
1,0,1 
1,1,1 
1,2,1 
0,0,0 

मुझे उल्लेख है कि अपवाद उम्मीद कर रहे हैं जब अपने लक्ष्य विशेषता नाममात्र नहीं है (उदा सांख्यिक) करते हैं। Bayesian नेटवर्क बेहतर काम करते हैं जब आपके सभी गुण नाममात्र होते हैं। यदि आप लक्ष्य विशेषता को संख्यात्मक में बदलते हैं तो आपको NullPointerException या ArrayIndexOutOfBoundsException मिल जाएगा। विशेष रूप से, इस अपवाद को लाइन पर फेंक दिया जाता है:

EditableBayesNet bn = new EditableBayesNet(ins); 

आपको पहले अपनी लक्षित कक्षा को अलग करना चाहिए।

+0

मुझे नहीं पता कि पहले क्या गलत था लेकिन यह अब भी मेरे लिए काम करता है। – trutheality

संबंधित मुद्दे