Tag: weka

Weka的PCA运行时间太长

我正在尝试使用Weka进行使用PCA算法的特征选择。 我的原始特征空间包含~9000个属性,在2700个样本中。 我尝试使用以下代码减少数据的维度: AttributeSelection selector = new AttributeSelection(); PrincipalComponents pca = new PrincipalComponents(); Ranker ranker = new Ranker(); selector.setEvaluator(pca); selector.setSearch(ranker); Instances instances = SamplesManager.asWekaInstances(trainSet); try { selector.SelectAttributes(instances); return SamplesManager.asSamplesList(selector.reduceDimensionality(instances)); } catch (Exception e ) { … } 但是,它没有在12小时内完成。 它停留在方法selector.SelectAttributes(instances); 。 我的问题是: weka的PCA需要这么长的计算时间吗? 或者我错误地使用PCA? 如果预计长时间运行: 如何调整PCA算法以更快地运行? 你能建议一个替代方案吗? (+示例代码如何使用它)? 如果不是: 我究竟做错了什么? 我应该如何使用weka调用PCA并获得降低的维数? 更新:评论证实了我的怀疑,它花费的时间远远超过预期。 我想知道 :我怎样才能在java中获得PCA – 使用weka或替代库。 […]

在Weka中测试单个实例

weka是否要求测试实例具有class属性。 我使用训练集arff文件来训练分类器。 现在我想测试一个实例(不是来自arff文件,必须通过代码创建)而没有class属性并预测类。 我找到了这个链接Weka:我如何在java中获得测试实例的预测值? 但我的class属性是字符串’Y’或’N’。 如果evaluateModelOnce()返回double,那意味着什么。 是类属性还是其他东西。 我正在使用weka API。

Weka:如何在java中获取测试实例的预测值?

我已经成功地训练了一个分类器(bayesnet)并构建了一个测试集(ARFF格式),它有一个实例,缺少一个值。 Evaluation eTest = new Evaluation(trainingInstance); eTest.evaluateModel(bayes_Classifier, testInstance); 如何访问缺失值的预测? 我用GUI测试了ARFF结构(训练和测试)。 他们工作。 我根本不知道,如何访问预测值…

尝试使用Weka向训练集添加更多实例时IndexOutOfBoundsException

我正在尝试向我的训练集添加更多实例并执行10次交叉validation。 我的实例是String格式,所以我使用StringToWordVectorfilter将它们转换为数字。 如果我不添加我想要的额外页面,事情会很好。 但是当我添加命令trainSet.addAll(data2); 并将trainSet传递给filter我在Instances fTrainSet = Filter.useFilter(trainSet, filter);的第一次迭代中得到一个奇怪的IndexOutOfBoundsException Instances fTrainSet = Filter.useFilter(trainSet, filter); Instances data = getDataFromFile(“pathtofile.arff”);//main dataset 1821 instances Instances data2 = getDataFromFile(“anotherpath.arff”);//709 instances i want to add int folds = 10; for(int i=0;i<folds;i++){ Instances trainSet = data.trainCV(folds, i);//training set System.out.println(trainSet.numInstances());//Prints 1638 Instances testSet = data.testCV(folds, i);//testing set //add more instances trainSet.addAll(data2); System.out.println(trainSet.numInstances());//Prints […]

使用WEKA API定义集群的输入数据

我想聚集由纬度和经度指定的点。 我正在使用WEKA API问题出在Instances instances = new Instances(40.01,1.02); 那么,如何在不使用ARFF文件的情况下指定输入数据? 我想只是将一个数组读入Instances 。 import java.io.Reader; import weka.clusterers.ClusterEvaluation; import weka.clusterers.SimpleKMeans; import weka.core.Instances; public class test { /** * @param args */ public static void main(String[] args) { Instances instances = new Instances(40.01,1.02); SimpleKMeans simpleKMeans = new SimpleKMeans(); simpleKMeans.buildClusterer(instances); ClusterEvaluation eval = new ClusterEvaluation(); eval.setClusterer(simpleKMeans); eval.evaluateClusterer(new Instances(instances)); eval.clusterResultsToString(); } }

句子分类(分类)

我一直在阅读有关文本分类的文章,并发现了几种可用于分类的Java工具,但我仍然想知道:文本分类是否与句子分类相同! 有没有专注于句子分类的工具?

weka.core.UnassignedDataset在创建未标记的实例时发生exception

我训练了一个IBK分类器,其中包含我手动创建的一些训练数据,如下所示: ArrayList atts = new ArrayList(); ArrayList classVal = new ArrayList(); classVal.add(“C1”); classVal.add(“C2”); atts.add(new Attribute(“a”)); atts.add(new Attribute(“b”)); atts.add(new Attribute(“c”)); atts.add(new Attribute(“d”)); atts.add(new Attribute(“@@class@@”, classVal)); Instances dataRaw = new Instances(“TestInstances”, atts, 0); dataRaw.setClassIndex(dataRaw.numAttributes() – 1); double[] instanceValue1 = new double[]{3,0,1,0,0}; dataRaw.add(new DenseInstance(1.0, instanceValue1)); double[] instanceValue2 = new double[]{2,1,1,0,0}; dataRaw.add(new DenseInstance(1.0, instanceValue2)); double[] instanceValue3 = new double[]{2,0,2,0,0}; […]

增加java中的堆大小为weka

我正在尝试增加java中的堆大小,因为weka会不断崩溃。 我使用了建议的行: > java -Xmx500m -classpath 但是我收到以下错误: -classpath requires class path specification 我不确定这意味着什么。 有什么建议么?

如何使用java代码在weka中使用新实例测试现有模型?

我有一个通过Weka GUI获得的分类器之一的.model文件。 现在我想在某个实例上测试这个模型。 谁能告诉我怎么做? Classifier cModel = (Classifier)new NaiveBayes(); cModel.buildClassifier(isTrainingSet); 我不想像在这段代码中一次又一次地构建分类器。 如何使用.model文件? // Test the model Evaluation eTest = new Evaluation(isTrainingSet); eTest.evaluateModel(cModel, isTrainingSet);

在weka中添加新实例

如何将新实例添加到我创建的现有Instances对象中? 这是一个例子: ArrayList atts = new ArrayList(2); ArrayList classVal = new ArrayList(); classVal.add(“A”); classVal.add(“B”); atts.add(new Attribute(“content”,(ArrayList)null)); atts.add(new Attribute(“@@class@@”,classVal)); Instances dataRaw = new Instances(“TestInstances”,atts,0); 我想为dataRaw添加一个新实例。 据我所知,我必须使用dataRaw.add(Instance i)….如果Instance类是一个接口,我如何创建一个实例对象? 提前致谢