文档章节

基于weka实现的神经网络算法实现

孟飞阳
 孟飞阳
发布于 2016/06/23 18:03
字数 777
阅读 214
收藏 1

1、算法实现 

package demo7;

import java.io.File;
import java.io.IOException;

import weka.classifiers.functions.MultilayerPerceptron;
import weka.core.Attribute;
import weka.core.FastVector;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ArffLoader;

/**
 * 基于weka实现的神经网络算法实现
 * @author mengfeiyang
 *
 */
public class BPDeep2 {  
  
    public static void main(String[] args) throws IOException {  
        //便于测试,用数组保存一些数据,从数据库中取数据是同理的  
        //二维数组第一列表示当月的实际数据,第二列是上个月的数据,用于辅助对当月数据的预测的  
        //二维数组的数据用于测试集数据,为了展示两种weka载入数据的方法,将训练集数据从arff文件中读取  
        double[][] a = 
        	{
        		{-0.93,-0.995},
        		{-0.93,-0.93},
        		{-0.93,-0.93},
        		{-0.95,-0.93},
        		{-0.93,-0.95},  
                {-0.95,-0.93},
                {-0.93,-0.95},
                {-0.93,-0.93},
                {-0.95,-0.93},
                {-0.9,-0.95},  
                {-0.92,-0.9},
                {-0.575,-0.92},
                {-0.23,-0.575}
            };  
          
        //读入训练集数据  
        String path = "E:/imgfolder/train.arff";
        System.out.println(path);
        File inputFile = new File(path);//该文件见源代码最后的分享链接,可以下载后将路径替换掉  
        ArffLoader atf = new ArffLoader();  
        try {  
            atf.setFile(inputFile);  
        } catch (IOException e1) {  
            e1.printStackTrace();  
        }  
        Instances instancesTrain = atf.getDataSet();   
        instancesTrain.setClassIndex(0);//设置训练数据集的类属性,即对哪个数据列进行预测(属性的下标从0开始)  
          
        //读入测试集数据  
        FastVector attrs = new FastVector();  
              
        Attribute ratio = new Attribute("CUR",1);//创建属性,参数为属性名称和属性号,但属性号并不影响FastVector中属性的顺序  
        Attribute preratio = new Attribute("PRE",2);  
              
        attrs.addElement(ratio);//向FastVector中添加属性,属性在FastVector中的顺序由添加的先后顺序确定。  
        attrs.addElement(preratio);  
              
        Instances instancesTest = new Instances("bp",attrs,attrs.size());//创建实例集,即数据集,参数为名称,FastVector类型的属性集,以及属性集的大小(即数据集的列数)  
              
        instancesTest.setClass(ratio);//设置数据集的类属性,即对哪个数据列进行预测  
          
        for(int k=0;k<13;k++){  
            Instance ins = new Instance(attrs.size());//创建实例,即一条数据  
            ins.setDataset(instancesTest);//设置该条数据对应的数据集,和数据集的属性进行对应  
            ins.setValue(ratio, a[k][0]);//设置数据每个属性的值  
            ins.setValue(preratio, a[k][1]);   
            instancesTest.add(ins);//将该条数据添加到数据集中  
        }  
          
        MultilayerPerceptron m_classifier = new MultilayerPerceptron();//创建算法实例,要使用其他的算法,只用把类换做相应的即可  
          
        try {  
            m_classifier.buildClassifier(instancesTrain); //进行训练  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
          
        for(int i = 0;i<13;i++){//测试分类结果  
            //instancesTest.instance(i)获得的是用模型预测的结果值,instancesTest.instance(i).classValue()获得的是测试集类属性的值  
            //此处是把预测值和实际值同时输出,进行对比  
            try {  
                System.out.println(m_classifier.classifyInstance(instancesTest.instance(i))+",,,"+instancesTest.instance(i).classValue());  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
        System.out.println("bp success!");  
    }  
  
}  

2、训练数据集:train.arff 

@relation 'test'
@attribute CUR numeric
@attribute PRE numeric
@data
-0.81,-0.85
-0.8,-0.81
-0.82,-0.8
-0.83,-0.82
-0.913,-0.83
-0.75,-0.913
-0.945,-0.75
-0.94,-0.945
-0.877,-0.94
-0.814,-0.877
-0.92,-0.814
-0.9025,-0.92
-0.886,-0.9025
-0.78,-0.886
-0.97,-0.78
-0.9145,-0.97
-0.85,-0.9145
-0.97,-0.85
-0.9,-0.97
-0.97,-0.9
-0.91,-0.97
-0.85,-0.91
-0.8,-0.85
-0.9249,-0.8
-0.93,-0.9249
-0.99,-0.93
-0.933,-0.99
-0.002,-0.933
-0.958,-0.002
-1,-0.958
-0.4115,-1
-0.951,-0.4115
-0.67,-0.951
-0.91091425,-0.67
-0.95,-0.91091425
-0.9454,-0.95
-0.9,-0.9454
-0.92,-0.9
-0.92075,-0.92
-0.914175,-0.92075
-0.95,-0.914175
-0.65,-0.95
-0.998,-0.65
-0.8795,-0.998
-0.9,-0.8795
-0.9995,-0.9

3、执行结果

E:/imgfolder/train.arff
-0.8387689167154422,,,-0.93
-0.8435666578599861,,,-0.93
-0.8435666578599861,,,-0.93
-0.8435666578599861,,,-0.95
-0.8420460436187248,,,-0.93
-0.8435666578599861,,,-0.95
-0.8420460436187248,,,-0.93
-0.8435666578599861,,,-0.93
-0.8435666578599861,,,-0.95
-0.8420460436187248,,,-0.9
-0.8459234640790234,,,-0.92
-0.8443420634975742,,,-0.575
-0.8777601385075624,,,-0.23
bp success!

 

© 著作权归作者所有

孟飞阳
粉丝 217
博文 1056
码字总数 566359
作品 5
朝阳
个人站长
私信 提问
25 个 Java 机器学习工具和库

本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法。这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用。Weka包括一系列的工具,如数据预处理...

oschina
2015/12/28
12.1K
11
超全!基于Java的机器学习项目、环境、库...

https://yq.aliyun.com/articles/278837?utmsource=tuicool&utmmedium=referral 摘要: 你是一名希望开始或者正在学习机器学习的Java程序员吗? 利用机器学习编写程序是最佳的学习方式。你可...

u011001084
2017/12/07
0
0
超全!基于Java的机器学习项目、环境、库...

转自:数据派THUID:DatapiTHU 你是一名希望开始或者正在学习机器学习的Java程序员吗? 利用机器学习编写程序是最佳的学习方式。你可以从头开始编写算法,但是利用现有的开源库,你可以取得更...

嘿你好夏天
2017/12/06
0
0
Weka的网友评论

WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。 WEKA作为一个公开的数据挖掘工作平台,集...

红薯
2009/12/11
859
4
数据挖掘工作平台--Weka

WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。 WEKA作为一个公开的数据挖掘工作平台,集...

匿名
2009/10/07
64.1K
4

没有更多内容

加载失败,请刷新页面

加载更多

可能是国内第一篇全面解读 Java 现状及趋势的文章

作者 | 张晓楠 Dragonwell JDK 最新版本 8.1.1-GA 发布,包括全新特性和更新! 导读:InfoQ 发布《2019 中国 Java 发展趋势报告》,反映 Java 在中国发展的独特性,同时也希望大家对 Java 有...

阿里云官方博客
2分钟前
0
0
Spring Boot 2.x基础教程:Swagger静态文档的生成

前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了。如果您还不熟悉这块,可以先阅读: Spring Boot 2.x基础教程...

程序猿DD
5分钟前
0
0
《毅力》读书笔记

1.确信你全身心地投入 2.准备好为目标进行艰难的跋涉 3.通过减少需要使用毅力的情形,为将来的挑战做好准备 4.尽可能具体细致地确定你的目标和实现目标的过程 5.把挑战分解为小而易于管理的小...

lingch
6分钟前
1
0
zk中快速选举FastLeaderElection实现

选举涉及概念 服务器状态 投票 如何选择投票? 协议 选举 如何进行选举? epoch 发送者 接收者 发送队列 接收队列 服务器状态 public enum ServerState { LOOKING,寻找Leader状态,当服务处于...

writeademo
9分钟前
0
0
教你玩转Linux—磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用三个命令为df、du和fdisk。 df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少...

Linux就该这么学
12分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部