之前使用weka 将一个离线的决策树分类算法移植到线上,主要是借助于weka中对决策树的PMML规范的支持,对于使用方法也是琢磨了半天才搞定的,为了方便后来人故在此给出主要的使用步骤,鉴于当时使用的weka 3.7.3对决策树支持有bug,所以我修改了源码,故会给出使用的jar包。
首先给出java代码,这里主要是给出使用流程框架,具体的结果例子等涉及一些内部信息不便于直接举例,同时我本机的spss软件貌似被删除了,所以也找不到比较好的例子了。
前提说明:PMML 文件是一种通用的数据挖掘模型文件,spss软件支持将模型导出为pmml文件,weka目前支持的pmml类型不多,但是对于C5这种决策树算法是支持的。
package all;
import java.util.ArrayList;
import weka.classifiers.pmml.consumer.PMMLClassifier;
import weka.core.Attribute;
import weka.core.DenseInstance;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.pmml.PMMLFactory;
import weka.core.pmml.PMMLModel;
public class TestWekaPmml {
/**
* @param args
* @throws Throwable
*/
public static void main(String[] args) throws Throwable {
String pmmlFile = "";
//加载pmml文件,支持File InputStream等
PMMLModel model = PMMLFactory.getPMMLModel(pmmlFile);
//得到PMML分类器
PMMLClassifier classifier =(PMMLClassifier) model;
//实例化属性列表
ArrayList<Attribute> attributes = new ArrayList<Attribute>();
//设置pmml文件中各属性类型,这里需要循环将pmml文件中的DataDictionary中的所有属性字段列出,同时确定数据类型
int order = 0;//这里按照pmml文件里的属性属性来,从0开始
Attribute stringAttribute = new Attribute("多值String属性",new ArrayList<String>(),order);
Attribute doubleAttribute = new Attribute("单值double属性",order);
attributes.add(stringAttribute);
attributes.add(doubleAttribute);
double result[] = null;
//构造数据集
Instance instance = new DenseInstance(attributes.size());
Instances paramInstances = new Instances("数据集名字", attributes,attributes.size());
instance.setDataset(paramInstances);
//依据属性类型设置属性值,weka中只支持double和string 够用了
//这里需要注意String类型的值必须是上面属性列表中String List中的某个
instance.setValue(doubleAttribute, (Double)0.00000);
instance.setValue(stringAttribute, (String)"type?");
//开始执行模型会返回2个double值,一个是正样本结果,一个是负样本结果
result= classifier.distributionForInstance(instance);
}
}
附件中是使用的weka源文件和jar包
分享到:
相关推荐
基于weka平台的决策树算法设计与实现 是一篇博士论文 很不错,介绍很详细
在数据挖掘领域,Weka是一款强大的开源工具,集成了多种机器学习算法,包括决策树。本篇文章将重点讲解如何使用Groovy调用Weka来生成决策树。 在Groovy中调用Weka,首先需要确保你的环境中已经安装了Weka库。这通常...
在Java中,可以使用各种库如Weka、Apache Mahout或自定义代码实现决策树。自定义实现通常包括以下组件: - 数据结构:用于存储数据集和决策树结构,如ArrayList、HashMap等。 - 分类器:包含构建和预测功能,用于...
本实验报告聚焦于使用Weka工具,结合C4.5算法,对UCI数据集进行分类学习,探究数据集规模和属性数量对决策树分类准确度的影响。 决策树是一种常用的数据挖掘方法,它以树状结构呈现,自顶向下递归地根据属性值进行...
第二步,决策树的剪枝:决策树的剪枝是对上一阶段生成的决策树进行检验、校正和修下的过程,主要是用新的样本数据集(称为测试数据集)中的数据校验决策树生成过程中产生的初步规则,将那些影响预衡准确性的分枝剪除...
(3)模型构建与评估:利用决策树算法对上述数据进行分类,构建决策树并进行性能评估:包括Recall(召回率)、Precision(精度)、F1和Accuracy(准确率); (4)结果讨论:对研究结果(剔除的指标,即未出现决策树...
在Java中实现决策树,我们首先需要导入必要的库,如`weka.core.Instances`用于处理数据,`weka.classifiers.trees.J48`或`weka.classifiers.rules.JRip`等类用于构建决策树模型。以下是基本步骤: 1. **数据预处理*...
决策树是一种常用的人工智能和机器学习算法,用于分类和回归任务。...通过理解决策树的工作原理,选择合适的算法库(如Weka),并掌握训练、评估和优化模型的方法,开发者可以有效地运用决策树解决分类和回归问题。
基于决策树分类的Weka平台上数据挖掘应用.pdf
- Java库如Weka和Weka4J提供了决策树算法的接口,方便快速构建模型。 6. **Demo2中的具体实现** - “Demo2”可能是一个基于特定决策树算法(如ID3、C4.5或CART)的Java示例代码。 - 可能包含数据加载、数据...
在Java中实现决策树,可以使用开源库如Weka或自定义实现。Weka是一个强大的数据挖掘工具,提供了多种机器学习算法,包括决策树。自定义实现则需要设计数据结构来表示决策树,实现属性选择、树构建和预测等功能。通常...
本文主要围绕基于Weka平台的J48决策树算法进行实验研究,并与其他常见决策树算法进行比较。 首先,J48算法是在ID3算法基础上的改进。ID3算法以信息熵为基础,选择最优属性来划分数据集,但其对连续属性处理能力有限...
基于机器学习weka框架+决策树和KNN算法实现网络入侵检测源码+详细项目说明.zip基于机器学习weka框架+决策树和KNN算法实现网络入侵检测源码+详细项目说明.zip基于机器学习weka框架+决策树和KNN算法实现网络入侵检测...
**see5.0决策树分析算法详解** **一、引言** See5.0是一款基于C4.5决策树算法的开源软件,主要用于数据挖掘和机器学习中的分类任务。它由Ross Quinlan开发,是C4.5算法的一个早期版本,尽管现在已经被更新的工具如...
在Java中实现决策树,我们可以选择自定义算法,如ID3(Iterative Dichotomiser 3),或者使用现有的机器学习库,如Weka、Deeplearning4j等。本篇文章将深入探讨ID3算法以及如何在Java中实现它。 ID3算法是基于信息...
- 可以使用第三方库如`Shark`或`Weka`的C++接口来实现决策树,但这些库可能包含更复杂的算法和功能,不一定适合初学者。 - 自行编写ID3算法可以更好地理解其工作原理,同时也能锻炼编程能力。 9. **文件`...
在实际应用中,C4.5算法在Weka平台上的设计和实现包括数据准备、模型构建、决策树生成、剪枝等步骤。研究人员往往需要对特定的数据集进行分析,以检验算法的性能。例如,在上述文件中提到的二手汽车数据库研究中,...
- **Weka**:一个强大的数据挖掘库,包含多种决策树算法实现,如J48(C4.5的Java实现)。 - **Apache Mahout**:提供基于Hadoop的大规模机器学习库,包含决策树算法。 - ** Smile**:简洁的机器学习库,支持决策...