我正在尝试将更多实例添加到我的训练集中,并执行10倍交叉验证。
我的实例为String格式,因此我使用StringToWordVector过滤器将其转换为数字。如果我不添加我想要的多余页面,事情将会很好。但是当我添加命令trainSet.addAll(data2);
并传递trainSet
到过滤器时,我IndexOutOfBoundsException
在第一次迭代中遇到了一个奇怪的问题InstancesfTrainSet = 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 2347
//filter
StringToWordVector filter = new StringToWordVector();
filter.setInputFormat(trainSet);
filter.setWordsToKeep(10000);
filter.setTFTransform(true);
filter.setLowerCaseTokens(true);
filter.setOutputWordCounts(true);
Stemmer stemmer = new IteratedLovinsStemmer();
filter.setStemmer(stemmer);
WordsFromFile stopwords = new WordsFromFile();
stopwords.setStopwords(new File(".data/stopwords2.txt"));
filter.setStopwordsHandler(stopwords);
Instances fTrainSet = Filter.useFilter(trainSet, filter);//error!!!
Instances fTestSet = Filter.useFilter(testSet, filter);
....
//classification and evaluation....
尝试使用过滤器时出现以下错误:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2161, Size: 1749
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at weka.core.Attribute.addStringValue(Attribute.java:924)
at weka.core.StringLocator.copyStringValues(StringLocator.java:150)
at weka.core.StringLocator.copyStringValues(StringLocator.java:91)
at weka.filters.Filter.copyValues(Filter.java:399)
at weka.filters.Filter.bufferInput(Filter.java:342)
at weka.filters.unsupervised.attribute.StringToWordVector.input(StringToWordVector.java:655)
at weka.filters.Filter.useFilter(Filter.java:692)
at CrossValidationExample.main(CrossValidationExample.java:108)
有什么事吗
经过一番搜索,我意识到该addAll
功能有问题。我能想到的一个原因是,addAll
仅添加实例的引用,而当我尝试将其与一起使用时,这是一个问题filter
。相反,我使用了此处建议的合并功能,因此我替换trainSet.addAll(data2);
为 Instances newTrainSettrainSet = merge(trainSet,data2);
,一切正常。
问题内容: 如何将新实例添加到我创建的现有Instances对象中? 这是一个例子: 我想向dataRaw添加一个新实例。据我所知,我必须使用dataRaw.add(Instance i)....如果Instance类是一个接口,如何创建一个实例对象? 提前致谢 问题答案: 让我们从一些亮点开始。 weka将每个实例值存储为double []。因此,您创建double [] instanceVal
每当用户在JOptionPane确认对话框的帮助下被询问是否将产品添加到购物车时选择“是”,我都会尝试将行添加到我的表中。我的代码如下: 然而,我得到了这个错误:线程“AWT-EventQueue-0”java.lang.ClassCastException:javax.swing中出现异常。JTable$1无法强制转换为javax.swing.table.DefaultTableModel 有人
问题内容: 我有一些arff文件。我想顺序阅读它们并创建一个大数据集。Instances.add(Instance inst)不会将字符串值添加到实例,因此尝试setDataset()…但即使失败。有没有办法完成直观上正确的字符串操作? 问题答案: 这是从邮件列表。我以前保存过 如何将两个数据文件a.arff和b.arff合并到一个数据列表中? 取决于您在说什么合并。您是否只想追加第二个文件(两个
我有一个简单的Hello World示例,它将Map传递给Camel,并通过Log4J将值显示到控制台。我想通过将Jackson库添加到我的Camel应用程序Context.xml来扩展这个示例,以JSON格式呈现这个映射 首先,我尝试将以下XML标记添加到我的applicationContext.xml中(如http://camel.apache.org/json.html大学“在Spring
建造Gradle。应用程序部分。 项目部分。 我的文件中没有所有项目部分。这就是为什么我自己添加了这个地方。但是那些在所有项目中定义的 它必须成形。当我尝试引入google()和mavenCentral时,它给出了buildScript中已经定义的错误。当我试图只定义没有定义google()和mavenCentral;Build被配置为首选设置存储库而不是项目存储库,但存储库“maven”是由Bu
问题内容: 我在Google上搜索的次数越多,我就会越来越困惑。 我从CSV导入了一个长度未知的名称列表以及其他一些详细信息,然后我需要将其转换为Person对象并将其存储在名为people的列表中,该列表是该类Club的实例变量,它的列表成员基本上。 这是非常复杂的事情的非常简化的版本,我需要在while中循环遍历文件,为每行创建对象,然后将其添加到列表集合中。 但是,当我运行代码时,我一直收到