2013-07-18 6 views
6

मैं एक वर्गीकारक Weka का उपयोग कर LibSVM आधारित का उपयोग करने के कोशिश कर रहा हूँ का उपयोग कर "सांख्यिक वर्ग नहीं संभाल कर सकते हैं", लेकिन मैं यह त्रुटि आई:Weka त्रुटि जावा कोड में LibSVM

Exception in thread "main" weka.core.UnsupportedAttributeTypeException:weka.classifiers.functions.LibSVM: Cannot handle numeric class! 
    at weka.core.Capabilities.test(Unknown Source) 
    at weka.core.Capabilities.test(Unknown Source) 
    at weka.core.Capabilities.test(Unknown Source) 
    at weka.core.Capabilities.testWithFail(Unknown Source) 
    at weka.classifiers.functions.LibSVM.buildClassifier(Unknown Source) 
    at imgclassifier.ImgClassifier.main(ImgClassifier.java:45) 
Java Result: 1 

यह मेरा कोड है:

try { 

    File f = new File("australian.txt"); 
    LibSVMLoader loader = new LibSVMLoader(); 
    loader.setSource(f); 
    Instances i = loader.getDataSet(); 

    LibSVM svm = new LibSVM(); 
    svm.buildClassifier(i); 

}catch (IIOException e) { 
    e.printStackTrace(); 
} 

ऑस्ट्रेलियाई.txt एक उदाहरण है: LibSVM DataSets क्या कोई मुझे बता सकता है कि त्रुटि कहां है? अग्रिम धन्यवाद

उत्तर

7

मैं आपके पूरे दृष्टिकोण की आलोचना नहीं कर सकता, लेकिन एक आवश्यक वस्तु जो आप गायब हैं, वह एसवीएम को बता रही है कि आप प्रतिगमन करना चाहते हैं।

ऐसा करने के लिए बताने के लिए की जरूरत है -; ("; hellip के लिए और; प्रतिगमन (एप्सिलॉन-SVR, न्यू-SVR) है & hellip LIBSVM और है hellip" कई लोगों की धारणा के विपरीत, LibSVM प्रतिगमन कर सकते हैं देखने के http://www.csie.ntu.edu.tw/~cjlin/libsvm/) यह प्रतिगमन करने के लिए:

svm.setSVMType(new SelectedTag(LibSVM.SVMTYPE_EPSILON_SVR, LibSVM.TAGS_SVMTYPE)); // -S 3=epsilon-SVR 

/लूटने

पुनश्च - मैं अभी भी 'संख्यात्मक वर्ग संभाला नहीं जा सकता' त्रुटि मिली जब तक मैं सभी जावा वस्तु उन्मुख दृष्टिकोण का उपयोग कर मानकों कोडित, LibSVM पर तरीकों का उपयोग कर ऑब्जेक्ट, स्ट्रिंग-आधारित "विकल्प" दृष्टिकोण का उपयोग करने के बजाय। मुझे नहीं पता कि यह क्यों है, और एक लाल हेरिंग हो सकता है, लेकिन वहां है।

-1

उस कॉलम की श्रेणी अनुक्रमणिका सेट करें जिसे आप भविष्यवाणी करना चाहते हैं। तो बस इसे आजमाएं,

i.setClassIndex(train.numAttributes() - 1); 
संबंधित मुद्दे