我已经搜遍了所有的stackoverflow和谷歌搜索这些类型的预测,但没有找到IBk或KStar或LWL。我需要从这三个clasifiers中的任何一个实例预测。我在Android工作室中这样做。
我已经找到了从其他分类器中获取预测的方法:
来自Here
的 J48:double[] prediction=j48.distributionForInstance(test.get(s1));
//output predictions
for(int i=0; i<prediction.length; i=i+1)
{
System.out.println("Probability of class "+
test.classAttribute().value(i)+
" : "+Double.toString(prediction[i]));
}
来自Here
的 Bayesnet:Evaluation eTest = new Evaluation(trainingInstance);
eTest.evaluateModelOnce(bayes_Classifier, testInstance);
来自Here
的 NaiveBayes:NaiveBayes naiveBayes = new NaiveBayes();
naiveBayes.buildClassifier(train);
// this does the trick
double label = naiveBayes.classifyInstance(test.instance(0));
test.instance(0).setClassValue(label);
System.out.println(test.instance(0).stringValue(4));
但是我无法使用它们,因为我的分类器没有相同的方法......或者我找不到方法
我的代码:
//I skipped code till here because its too much,
//but Data is definetly inside *instances* (I checked with debuger)
instances.setClassIndex(instances.numAttributes()-1);
//was trying the sam with KStar, LWL, AdditiveRegression, RandomCommittee)
IBk ibk = new IBk();
//I want predicitons for this instance. For the third attribute3
Instance testInst = new DenseInstance(3);
testInst.setValue(attribute1, 3);
testInst.setValue(attribute2, 16);
testInst.setValue(attribute3, 0);
//I was hopping for some simple way like this: (but this returns nothing)
double rez =0;
String var="";
try{
ibk.buildClassifier(instances);
rez = ibk.classifyInstance(testInst);
}
catch(Exception ex)
{
Log.e("Error","ex.getMessage()");
}
}
Log.w("GIMME RESULTS:",rez);
即使是其他分类器也可以像AdditiveRegression,Bagging,RandomCommitte和DecisionTable一样在Weka GUI中做出很好的预测,但我需要用Java预测.... :)
答案 0 :(得分:0)
通过测试所有方法找到它。
ibk.buildClassifier(dataSet);
rez2 = ibk.distributionForInstance(i2); //distrib
int result = (int)rez3[0];
//it goes tha same with Kstar
意识到weka中的分类器通常使用离散数据(从min到max的相等步长)运行。我的数据并非都是离散的。 Ibk和Kstar能够使用分布式数据,这就是为什么我只能将这两个数据用于我的数据。