【问题标题】:How to pass arguments to "Matlab Weka Interface"如何将参数传递给“Matlab Weka 接口”
【发布时间】:2023-03-24 18:20:01
【问题描述】:

我已经从here 安装了“Matlab Weka 界面”。我使用 BayesNet 的代码如下,但它会引发异常。请帮助我如何通过选项。

代码:

    try
    classifierNo=classifierNo+1;
    wekaClassifierName = 'bayes.BayesNet';
    wekaClassifierConfig = {'-D -Q weka.classifiers.bayes.net.search.local.K2 -- -P 1 -S BAYES -E weka.classifiers.bayes.net.estimate.SimpleEstimator -- -A 0.5'};

    for i = 1:10
        test = (indices == i); 
        train = ~test;
        testSize = sum(test);

        if testOriginal==0
            train = [num2cell(mskMat(train,:)),irisLabels(train,:)];
            test  = [num2cell(global_origMat(test,:)),irisLabels(test,:)];

            %Convert to weka format
            train = matlab2weka('iTrain',featureNames,train,classIndex);
            test =  matlab2weka('iTest',featureNames,test);

            %Train the classifier
            nb = trainWekaClassifier(train,wekaClassifierName,wekaClassifierConfig);

            %Test the classifier
            predicted = wekaClassify(test,nb);

            %The actual class labels (i.e. indices thereof)
            actual = test.attributeToDoubleArray(classIndex-1); 

            correctRate = sum(actual == predicted)/testSize;
        else
            train = [num2cell(global_origMat(train,:)),irisLabels(train,:)];
            test  = [num2cell(global_origMat(test,:)),irisLabels(test,:)];

            %Convert to weka format
            train = matlab2weka('iTrain',featureNames,train,classIndex);
            test =  matlab2weka('iTest',featureNames,test);

            %Train the classifier
            nb = trainWekaClassifier(train,wekaClassifierName,wekaClassifierConfig);

            %Test the classifier
            predicted = wekaClassify(test,nb);

            %The actual class labels (i.e. indices thereof)
            actual = test.attributeToDoubleArray(classIndex-1); 

            correctRate = sum(actual == predicted)/testSize;
        end
    end

    fprintf ('%f \n\t\t\t\t\t\t',correctRate);
    sumCorrect(classifierNo)=sumCorrect(classifierNo)+correctRate;
    repeatClassifier(classifierNo) = repeatClassifier(classifierNo) + 1;
end

错误如下:

使用 weka.classifiers.bayes.BayesNet/setOptions 时出错 发生 Java 异常: java.lang.Exception:非法选项:-D -Q weka.classifiers.bayes.net.search.local.K2 -- -P 1 -S BAYES -E weka.classifiers.bayes.net.estimate.SimpleEstimator -- -A 0.5 在 weka.core.Utils.checkForRemainingOptions(Utils.java:482) 在 weka.classifiers.bayes.BayesNet.setOptions(BayesNet.java:510)"

【问题讨论】:

    标签: matlab options weka


    【解决方案1】:

    错误意味着您在变量wekaClassifierConfig 中使用了无效参数。我对这个包不熟悉,所以我不知道哪个参数不好,我会先回到文档或一一删除参数,看看是哪一个导致了错误。

    【讨论】:

    • 感谢您的帮助。经过一些尝试,我发现我必须拆分选项。但是,这没有记录。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多