机器学习工具Weka 使用已知进行实时预测
来源:互联网 发布:手机淘宝订单无故消失 编辑:程序博客网 时间:2024/06/06 02:28
本文使用Weka的classifyInstance和已知的机器学习模型来对数据进行实时预测
对数据进行实时预测一般有以下几个要点:
1、自己根据属性构建instance实例。
2、调用之前已经训练的模型,调用时需要将模型强制转变为模型机器学习类型,如NaiveBayes的模型需要这样操作。
Classifier m_Classifier = (NaiveBayes)SerializationHelper.read(new FileInputStream("model/bayes.model"));
以下是本文构建的Weka实时预测功能:
本实例中instance具有四个属性,第一个为double属性,第二个是double属性,第三个是Nominal类型,第四个是Class类型(预测值)。
注:本文中使用的模型可以使用Weka图形界面操作生成。
代码思路:
首先,构建一个instances结构,构建instances具有什么样的属性;其次,指定instances的类别索引,即指定哪个属性代表的是类别。之后,构建instance实例,将instances的结构框架指定为instance的数据集,给instance赋值,此处传值时不需要传入Class值,因为这是我们要预测的;最后,使用已知模型的classifyInstance方法对instance进行预测,再根据预测出的索引得到预测类别的值。
以下是编写的Weka实时预测代码:
import java.io.FileInputStream;import java.io.FileNotFoundException;import weka.classifiers.Classifier;import weka.classifiers.bayes.NaiveBayes;import weka.core.Attribute;import weka.core.FastVector;import weka.core.Instance;import weka.core.Instances;import weka.core.SerializationHelper;public class WekaTestInstance {Instances m_Data = null;Classifier m_Classifier = null;public WekaTestInstance() throws FileNotFoundException, Exception{m_Classifier = (NaiveBayes)SerializationHelper.read(new FileInputStream("model/bayes.model"));String nameOfDataset = "messDataset";FastVector attributes = new FastVector();attributes.addElement(new Attribute("aa"));attributes.addElement(new Attribute("bb"));FastVector fvNominalVal = new FastVector(3);fvNominalVal.addElement("blue");fvNominalVal.addElement("gray");fvNominalVal.addElement("black");attributes.addElement(new Attribute("Nominal", fvNominalVal));FastVector classValues = new FastVector(2);classValues.addElement("pos");classValues.addElement("neg");attributes.addElement(new Attribute("Class", classValues));m_Data = new Instances(nameOfDataset, attributes, 10);m_Data.setClassIndex(m_Data.numAttributes()-1);}public void classifyMessage(double aa,double bb,String nominal) throws Exception {Instances testset = m_Data.stringFreeStructure();Instance instance = makeInstance(aa,bb,nominal,testset);System.out.println(m_Data.numAttributes());System.out.println(instance);double predicted = m_Classifier.classifyInstance(instance);System.out.println("predicted:"+predicted);System.out.println("Message classified as : " +m_Data.classAttribute().value((int)predicted));}private Instance makeInstance(double aa,double bb,String nominal,Instances data) {Instance instance = new Instance(4);instance.setDataset(data);Attribute aaAtt = data.attribute("aa");Attribute bbAtt = data.attribute("bb");Attribute nominalAtt = data.attribute("Nominal");instance.setValue(aaAtt, aa);instance.setValue(bbAtt, bb);instance.setValue(nominalAtt, nominal);//instance.setValue((Attribute)instance.attribute(0), aa);//instance.setValue((Attribute)instance.attribute(1), bb);//instance.setValue((Attribute)instance.attribute(2),nominal);return instance;}public static void main(String[] args) throws Exception {WekaTestInstance wTestInstance = new WekaTestInstance();wTestInstance.classifyMessage(5.6,9.9,"gray");}}
0 0
- 机器学习工具Weka 使用已知进行实时预测
- weka的使用-机器学习工具
- 使用Weka进行数据挖掘(Weka教程七)Weka分类/预测模型构建与评价
- [转]机器学习工具:scikit-learn/Weka
- 机器学习工具:scikit-learn/Weka
- 【人工智能】软件使用--weka如何进行数据预测
- (转)机器学习工具WEKA使用总结,包括算法选择、参数优化、属性选择
- 使用Weka进行数据挖掘学习入门
- [机器学习]K近邻算法及其应用--WEKA工具
- WEKA——数据挖掘与机器学习工具
- Weka 机器学习 开源
- 机器学习笔记1:基于Logistic回归进行数据预测
- 用机器学习构建模型,进行信用卡反欺诈预测
- Weka介绍--使用Weka进行数据挖掘
- 机器学习未来预测
- 机器学习学习笔记--使用Keras实现图片预测
- 使用Weka进行数据挖掘
- 使用Weka进行数据挖掘
- 中台风险分析-数学期望的现实意义
- 在PHP中,通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。如果要转换文件大小的单位,可以自己定义函数来实现。
- jquery弹出层 wbox使用
- X-code 6中使用iOS7 SDK的方法
- 学习笔记一:关于directx sdk的安装于一些概念
- 机器学习工具Weka 使用已知进行实时预测
- linux内核树的建立
- hive优化
- 产品经理想法-思考-实现,停在了哪一步?
- 翻页安徽富挖个还有温泉谷万法归一
- 第十七次codeforces竞技结束 #270 Div 2
- dfdfd
- Spring MVC的多视图解析器配置及与Freemarker的集成
- js闭包的用途(匿名自执行函数,缓存,实现封装,实现面向对象)