Tag: weka

如何将属性类型更改为String(WEKA – CSV到ARFF)

我正在尝试使用WEKA库制作SMS SPAM分类器。 我有一个带有“标签”和“文本”标题的CSV文件。 当我使用下面的代码时,它会创建一个包含两个属性的ARFF文件: @attribute label {ham,spam} @attribute text {‘Go until jurong point’,’Ok lar…’, etc.} 目前,似乎text属性被格式化为名义属性,每个消息的文本都是一个值。 但是我需要text属性是一个String属性,而不是所有实例中所有文本的列表。 将text属性作为String将允许我使用StringToWordVectorfilter来训练分类器。 // load CSV CSVLoader loader = new CSVLoader(); loader.setSource(new File(args[0])); Instances data = loader.getDataSet(); // save ARFF ArffSaver saver = new ArffSaver(); saver.setInstances(data); saver.setFile(new File(args[1])); saver.setDestination(new File(args[1])); saver.writeBatch(); 我知道我可以像这样创建一个String属性: Attribute tmp = new Attribute(“tmp”, (FastVector) null); 但我不知道如何替换当前属性,或者在读取CSV之前设置属性类型。 […]

SMO,WEKA中的顺序最小优化

我是Weka的新手。 我想在WEKA中使用顺序最小优化。 谁能告诉我怎么办? 这是我的Java代码,但它不起作用: public class SVMTest { public void test(File input) throws Exception{ File tmp = new File(“tmp-file-duplicate-pairs.arff”); String path = input.getParent(); //tmp.deleteOnExit(); ////removeFeatures(input,tmp,useType,useNames, useActivities, useOccupation,useFriends,useMailAndSite,useLocations); Instances data = new weka.core.converters.ConverterUtils.DataSource(tmp.getAbsolutePath()).getDataSet(); data.setClassIndex(data.numAttributes() – 1); Classifier c = null; String ctype = null; boolean newmodel = false; ctype =”SMO”; c = new SMO(); String[] options […]

删除Weka中的实例

我正在使用Weka Java API,我有一段代码。 在代码中,我试图做如下的事情: for (each instance i in the training/test set) if (condition == TRUE) remove instance (i) from training/test set; [编辑]例如,我有1000个实例,我试图查看每个实例,如果满足特定条件。 如果条件为真,那么我将从训练/测试集中删除该实例。 我相信Weka没有以这种方式直接删除实例的选项。 任何建议,专业人士?

在Weka中使用StringToWordVector和内部数据结构

我正在尝试使用Weka获取文档聚类。 这个过程是一个更大的管道的一部分,我真的不能写出arff文件。 我将每个文档中的所有文档和单词包都作为Map<String, Multiset>结构,其中键是文档名称, Multiset值是文档中单词的包 。 我有两个问题,真的: (1)目前的方法最终聚集了术语,而不是文件: public final Instances buildDocumentInstances(TreeMap<String, Multiset> docToTermsMap, String encoding) throws IOException { int dimension = TermToDocumentFrequencyMap.navigableKeySet().size(); FastVector attributes = new FastVector(dimension); for (String s : TermToDocumentFrequencyMap.navigableKeySet()) attributes.addElement(new Attribute(s)); List instances = Lists.newArrayList(); for (Map.Entry<String, Multiset> entry : docToTermsMap.entrySet()) { Instance instance = new Instance(dimension); for (Multiset.Entry ms_entry : […]

哪个Weka和LibSVM .jar文件在Java代码中用于SVM分类

如果我使用Weka Explorer运行一些训练数据来反对使用线性内核的SVM测试数据,一切都很好。 但我需要在我自己的Java中以编程方式执行此操作,我当前的代码如下所示: Instances train = new Instances (…); train.setClassIndex(train.numAttributes() – 1); Instances test = new Instances (…) + ClassificationType classificationType = ClassificationTypeDAO.get(6); LibSVM libsvm = new LibSVM(); String options = (classificationType.getParameters()); String[] optionsArray = options.split(” “); libsvm.setOptions(optionsArray); String[] pars = libsvm.getOptions(); Evaluation eval = new Evaluation(train); libsvm.buildClassifier(train); eval.evaluateModel(libsvm, test); System.out.println(eval.toSummaryString(“\nResults\n======\n”, false)); 但是,正在抛出exception: eval.evaluateModel(libsvm, test); […]

尽管设置了PATH和CLASSPATH,但无法执行jar文件

我的问题是关于在路径中包含jar文件。 它有两个部分。 1)我正在尝试执行位于/home/andy/software/weka/weka.jar中的weka.jar jar文件 PATH变量指向此jar文件(即/home/andy/software/weka/weka.jar),CLASSPATH也是如此。 但是,当我尝试使用java -jar weka.jar运行jar时,出现错误“无法访问jarfile weka.jar”。 有什么想法发生了什么? 我在Ubuntu Linux上。 我在SO中环顾四周,似乎我没有做任何明显错误的事情(因为PATH和CLASSPATH似乎都设置正确)。 2)我希望能够将我的所有jar文件放在一个目录中并在我的路径中包含该目录(而不是单独包含每个jar)。 我怎样才能做到这一点? 提前致谢。 编辑1 – >这是我的命令行 andy@laptop:~$ export CLASSPATH=$CLASSPATH:/home/andy/research/software/weka/weka.jar andy@laptop:~$ echo $CLASSPATH :/home/andy/research/software/weka/weka.jar andy@laptop:~$ java -jar weka.jar Unable to access jarfile weka.jar andy@laptop:~$ java weka.jar Exception in thread “main” java.lang.NoClassDefFoundError: weka/jar Caused by: java.lang.ClassNotFoundException: weka.jar at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) […]

使用LIBSVM来预测用户的真实性

我打算使用LibSVM来预测Web应用程序中的用户真实性。 (1)收集特定用户行为的数据(例如,登录时间,IP地址,国家等)。(2)使用收集的数据训练SVM(3)使用实时数据比较并生成真实性水平的输出 有人可以告诉我怎样才能用LibSVM做这样的事情? Weka可以帮助解决这些类型的问题吗?

错误在java代码中使用WEKA API时:类属性未设置?

我正在尝试在我的java代码中使用weka API。 我使用J48树分类来分类MySQL数据库中的数据集,但是我有这个错误: Trying to add database driver (JDBC): RmiJdbc.RJDriver – Error, not in CLASSPATH? Trying to add database driver (JDBC): jdbc.idbDriver – Error, not in CLASSPATH? Trying to add database driver (JDBC): com.mckoi.JDBCDriver – Error, not in CLASSPATH? Trying to add database driver (JDBC): org.hsqldb.jdbcDriver – Error, not in CLASSPATH? weka.core.UnassignedClassException: weka.classifiers.trees.j48.C45PruneableClassifierTree: Class attribute […]

Java:如何使用Weka生成的模型组装/创建单个实例进行分类?

我一直在寻找这个答案一段时间无济于事。 首先介绍一下:我正在尝试使用Weka为robocode创建一个AI。 我首先将手动机器人所需的数据记录到ARFF文件中,这是正常的。 然后使用Weka和创建的模型处理此数据,然后保存此文件。 我可以成功导入模型并对从另一个arff文件导入的数据集进行分类并使用结果。 我现在要做的是每次游戏状态更改都是组合一个实例并对其进行分类,以便使用我以前保存的模型来决定移动的方式等。 我试图在维基上查找: http : //weka.wikispaces.com/Programmatic+Use和这个ibm教程: http : //www.ibm.com/developerworks/opensource/library/os-weka3/举几个例子,我也一直在寻找API,但这并没有让我继续下去。 我尝试过的大部分内容都已弃用,例如创建一个带有属性和快速向量的原型,然后创建一个空数据集。 然后使用诸如inst.setvalue(attrib,value)之类的东西创建一个具有所需值的新实例,并将其添加到数据集中。 另外,在实例中,类索引或我预测的属性是否必须为空或设置为缺失或者某些东西,因为我试图预测它时,我不会知道该值? 那么我有什么想法可以解决这个问题吗? 任何帮助是极大的赞赏, 非常感谢你。

如何在java中从数组创建ARFF文件?

我想得到java中两个数组所代表的xy对的加权线性回归系数。 我已经注意到了weka,但它在’LinearRegression’类中询问了一个’Instances’类对象。 要创建“Instances”类文件,需要包含数据的ARFF文件。 我遇到过使用FastVector类的解决方案,但现在已经在最新的weka版本中弃用了。 如何为xy对创建一个ARFF文件,并在java中用数组表示相应的权重? 这是我的代码基于Baz的答案。 它在最后一行“lr.buildClassifier(newDataset)”上给出一个例外 – Thread [main](Suspended(exceptionUnassignedClassException)) Capabilities.testWithFail(Instances)行:1302。 这是代码 – public static void test() throws Exception { double[][] data = {{4058.0, 4059.0, 4060.0, 214.0, 1710.0, 2452.0, 2473.0, 2474.0, 2475.0, 2476.0, 2477.0, 2478.0, 2688.0, 2905.0, 2906.0, 2907.0, 2908.0, 2909.0, 2950.0, 2969.0, 2970.0, 3202.0, 3342.0, 3900.0, 4007.0, 4052.0, 4058.0, 4059.0, 4060.0}, {19.0, 20.0, 21.0, […]