weka 建立回归模型并输出打分结果

原创 2018年04月17日 16:58:36

例子是从数据库中读取数据,并拆分成建模数据,测试数据,建立多层感知器模型,并对测试数据进行打分,输出打分结果

package weka.regression;

import java.io.File;

import org.apache.commons.compress.utils.IOUtils;
import org.apache.commons.io.FileUtils;

import weka.Utils;
import weka.classifiers.evaluation.Evaluation;
import weka.classifiers.functions.MultilayerPerceptron;
import weka.core.Instance;
import weka.core.Instances;

public class RegressionTest {

    public static void main(String[] args) {
        RegressionTest regressionTest = new RegressionTest();
        Instances modelData = regressionTest.loadData();
        //数据拆分成建模数据和测试数据
        int trainSize = (int) Math.round(modelData.numInstances() * 0.80);
        int testSize = modelData.numInstances() - trainSize;
        modelData.setClassIndex(modelData.numAttributes() - 1);
        Instances train = new Instances(modelData, 0, trainSize);
        train.setClassIndex(train.numAttributes() - 1);
        MultilayerPerceptron model = regressionTest.trainModel(train);
        Instances test = new Instances(modelData, trainSize, testSize);
        test.setClassIndex(test.numAttributes() - 1);
        regressionTest.evaluate(model, test);

    }

    public MultilayerPerceptron trainModel(Instances train){
        MultilayerPerceptron model = new MultilayerPerceptron();
        try {
            model.buildClassifier(train);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(model);
        return model;
    }

    public Instances loadData(){
        String sql = "select * from qy_car_model";
        Instances modelData = null;
        try {
            modelData = Utils.loadDataSetFromOracle(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return modelData;
    }

    public void evaluate(MultilayerPerceptron model,Instances testData){
        Evaluation eval;// 构造评价器
        try {
            eval = new Evaluation(testData);
            eval.evaluateModel(model, testData);// 用测试数据集来评价m_classifier
            double sum = testData.numInstances(); // 测试语料实例数
            StringBuffer buf = new StringBuffer();
            buf.append("SPD,ALPHA,PEDAL,BRAKE,RECOV,STEER,TEMP,真实值,预测值\n");
            for (int i = 0; i < sum; i++) {
                Instance ins = testData.instance(i);
                for(int j=0;j<ins.numAttributes();j++){
                    buf.append(ins.value(j)).append(",");//输出每条数据
                }
                buf.append(model.classifyInstance(ins));
                buf.append("\n");
            }
            File file = new File("testApplyResult.csv");
            FileUtils.writeStringToFile(file , buf.toString(),"UTF-8");
            System.out.println(buf);
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }


}
public static Instances loadDataSetFromOracle(String sql) throws Exception{
        InstanceQuery query = new InstanceQuery();
        query.setUsername("ywf");
        query.setPassword("ywf");
        File file = new File("DatabaseUtils.props.oracle");
        query.initialize(file);
        query.setQuery(sql);
        Instances data = query.retrieveInstances();
       return data;
    }

weka实际操作--构建分类、回归模型

weka提供了几种处理数据的方式,其中分类和回归是平时用到最多的,也是非常容易理解的,分类就是在已有的数据基础上学习出一个分类函数或者构造出一个分类模型。这个函数或模型能够把数据集中地映射到某个给定的...
  • qq_38663729
  • qq_38663729
  • 2017-08-16 16:43:49
  • 547

在Java中使用weka:手动生成并输出对分类器的评估

书读的少,翻译的不好别打我
  • Bryan__
  • Bryan__
  • 2014-11-02 23:34:02
  • 2330

使用Weka进行数据挖掘(Weka教程八)Weka分类评价Evaluation输出分析

Weka提供了多种多样的评价指标,为了让大家更清楚,降低学习时间,在这篇文章中我将分析ROC/AUC/F1/recall/precision/MCC/PRC...
  • qiao1245
  • qiao1245
  • 2016-03-14 14:21:56
  • 5028

Weka Explorer(探索者界面) 详解(4)logistic回归和回归算法

logistic回归和回归算法
  • rav009
  • rav009
  • 2013-09-06 18:16:18
  • 14029

Introduction to WEKA

  • 2014年03月01日 16:37
  • 342KB
  • 下载

weka数据预测 分类回归 方法 参数 总结

 1.线性回归(LinearRegression) 1.1原理 在统计学中,线性回归是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一...
  • silent_strings
  • silent_strings
  • 2015-01-26 11:52:33
  • 15852

用weka做数据分析 回归分析

回归 回归是最为简单易用的一种技术,但可能也是最不强大(这二者总是相伴而来,很有趣吧)。此模型可以简单到只有一个输入变量和一个输出变量(在 Excel 中称为 Scatter 图形,或 OpenOf...
  • Shellerine
  • Shellerine
  • 2016-11-17 15:18:46
  • 790

weka中,如何使用EM聚类,并导出聚类结果

新建Eclipse工程,下载weka.jar包,导入工程,新建class类,创建main函数,这些都不用说了吧!首先准备数据官方文本格式为arff,个人原因选择TXT格式,这个不必纠结!新建txt文本...
  • txb0504
  • txb0504
  • 2017-11-30 16:42:30
  • 257

weka中数据预测,方法回归,参数等学习总结

转自网易博客http://nanjiguilai.blog.163.com/blog/static/114800242201322033836158/ 1.线性回归(LinearRegression...
  • luoxia0805
  • luoxia0805
  • 2014-01-15 11:38:05
  • 2450

Andrew Ng机器学习笔记+Weka相关算法实现(二)生成学习/朴素贝叶斯

这篇博客主要涉及到Ng的课第二个讲义,包括生成学习算法 (generate learning algorithm)、高斯判别分析( Gaussian Discriminant Analysis,GD...
  • qiao1245
  • qiao1245
  • 2016-03-15 17:08:27
  • 1635
收藏助手
不良信息举报
您举报文章:weka 建立回归模型并输出打分结果
举报原因:
原因补充:

(最多只允许输入30个字)