数据预处理和weka.filters的使用

学习weka(7):weka数据预处理方法 1、前言 weka 数据预处理阶段全部在 filter 上: 下面把一些常见的机器学习数据与处理方法处理说一下(下面所有实例都是在 Explorer 模块上进行的)。 2、数据预处理方法 可以看到其 filters 可以分为五类,重点是画红框的部分:supervised 是有监督的,unsupervised 是无监督的;每一种往下分,又分为基于 attribute(属性列)和 instance(实例),基于属性列是按照列来进行操作的,基于实例是按照数据行进行操作的。 2.1 常见机器学习预处理方法 常见 阅读详情
来源:


http://www.cnblogs.com/htynkn/archive/2012/04/02/weka_3.html

数据预处理(data preprocessing)

数据预处理(data preprocessing)是指在主要的处理以前对数据进行的一些处理。

现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。

为了提高数据挖掘的质量产生了数据预处理技术。

数据预处理有多种方法:数据清理,数据集成,数据变换,数据归约等。这些数据处理技术在数据挖掘之前使用,大大提高了数据挖掘模式的质量,降低实际挖掘所需要的时间。

数据清理是使用比较频繁的,主要有:

(1)空缺值处理

目前最常用的方法是使用最可能的值填充空缺值,比如可以用回归、贝叶斯形式化方法工具或判定树归纳等确定空缺值.这类方法依靠现有的数据信息来推测空缺值,使空缺值有更大的机会保持与其他属性之间的联系。

还可以用一个全局常量替换空缺值、使用属性的平均值填充空缺值或将所有元组按某些属性分类,然后用同一类中属性的平均值填充空缺值.如果空缺值很多,这些方法可能误导挖掘结果。

(2)噪声数据处理

噪声是一个测量变量中的随机错误或偏差,包括错误的值或偏离期望的孤立点值。常用分箱、回归、计算机检查和人工检查结合、聚类等方法进行噪音处理。

 

数据变化主要使用平滑聚集,数据概化,规范化等手段使数据换为较利于数据挖掘的格式。

 

数据归约主要是为了压缩数据量,源数据可以用来得到数据集的归约表示,它接近于保持原数据的完整性,但数据量比原数据小得多.与非归约数据相比,在归约的数据上进行挖掘,所需的时间和内存资源更少,挖掘将更有效,并产生相同或几乎相同的分析结果。常用维归约、数据压缩、数值归约等方法实现。

Weka.Filters

weka.filters中包含了一些数据预处理的简单实现(其实已经够用了),主要分成两大类,监督过滤(UnsupervisedFilter)和非监督过滤(UnsupervisedFilter)。

如果是使用GUI的话,点击Filter的Choose就可以选择

weka3_2

选择完成后点击选择的Filter本身就可以修改相关参数。

weka3_3

完成参数修正后点击Apply就Ok了。

我平时使用的比较多的还是非监督过滤,下面介绍一些比较常见。

先介绍weka.filters.unsupervised.attribute包下的,这是非监督方法对属性进行预处理。

1.Add

为数据库添加一个新的属性,新的属性将会包含所有缺失值。可选参数:

attributeIndex:属性位置,从1开始算,last是最后一个,first是第一个

attributeName:属性名称

attributeType:属性类型,一般是4选1

dateFormat:数据格式,参考ISO-8601

nominalLabels:名义标签,多个值用逗号隔开

2.AddExpression

新增一个属性,该属性由现有属性通过设定的表达式计算得出。支持+, -, *, /, ^, log, abs, cos, exp, sqrt, floor, ceil, rint, tan, sin。现有属性由a+索引值构成。

3.AddID

字面意思,添加一个ID

4.AddNoise

只对名义属性有效,依照一定比例修改值。

5.Center

将数值化属性的平均化为0。

6.ChangeDateFormat

修改数据格式

7.Copy

复制制定属性并命名为Copy Of XX

8.Discretize

简单划分的离散化处理。参数:

attributeIndices:属性范围,如1-5,first-last

bins:桶的数量

9.FirstOrder

第n个值用n+1项值和n项值的差替换

10.MathExpression

功能和AddExpression类似,不过支持的运算更多,特别是MAX和MIN的支持特别有用。所有支持运算符如下:+, -, *, /, pow, log,abs, cos, exp, sqrt, tan, sin, ceil, floor, rint, (, ),A,MEAN, MAX, MIN, SD, COUNT, SUM, SUMSQUARED, ifelse

11.Reorder

重新排列属性,输入2-last,1可以让第一项排到最后,如果输入1,3,5的话…其他项就没有了

12.Standardize

这个和Center功能大致相同,多了一个标准化单位变异数

13.StringToNominal

将String型转化为Nominal型

14.SwapValues

交换值

然后是weka.filters.unsupervised.instance包下的

1.NonSparseToSparse

将所有输入转为稀疏格式

2.Normalize

规范化整个实例集

3.RemoveFolds

交叉验证,不支持分层,如果需要的话使用监督学习中的方法

4.RemoveRange

移除制定范围的实例,化为NaN

5.Resample

随机抽样,从现有样本产生新的小样本

6.SubsetByExpression

根据规则进行过滤,支持逻辑运算,向上取值,取绝对值等等

weka.filters.supervised包中的内容比较少,而且涉及到一些流程原理,这里就不介绍了,后面的文章会慢慢介绍到

调用Weka实现数据预处理

weka的使用并不仅仅极限于它自带的GUI或者命令行,我们可以使用weka的java api,在weka的基础架构和已经实现的算法基础上进行开发。

新建一个java项目,添加对weka.jar的引用。这个包一般在安装目录下,我的3.6版本的大小为6316kb。

Instances是最主要的数据集容器,读入arff文件初始化之,如下:

Instances instances=DataSource.read("data/cpu.arff"); 
System.out.println(instances.toSummaryString());

效果:

weka3_4

 

使用Filter的一般流程是:实例化过滤器,传入过滤器参数,通过Filter.useFilter使用过滤器

举个例子,我想为这个cpu数据库加入一个ID,使用AddID过滤器。

先实例化AddID

AddID filter = new AddID();

该过滤器需要2个参数,一个是位置,一个是名称。建立一个长为4的字符串数组,填充参数

复制代码
String[] options = new String[4]; 
options[0] = "-C";
options[1] = "first";
options[2] = "-N";
options[3] = "ID";
filter.setOptions(options);
filter.setInputFormat(instances);
复制代码

使用过滤器,然后输出

Instances newInstances = Filter.useFilter(instances, filter); 
System.out.println(newInstances.toSummaryString());

完整代码:

复制代码
Instances instances = DataSource.read("data/cpu.arff"); 
System.out.println(instances.toSummaryString());

AddID filter = new AddID();
String[] options = new String[4];
options[0] = "-C";
options[1] = "first";
options[2] = "-N";
options[3] = "ID";
filter.setOptions(options);
filter.setInputFormat(instances);
Instances newInstances = Filter.useFilter(instances, filter);
System.out.println(newInstances.toSummaryString());
复制代码

效果:

weka3_5

再演示一个离散化过滤的使用和新数据的保存

复制代码
Discretize discretize = new Discretize(); 
options = new String[6];
options[0] = "-B";
options[1] = "8";
options[2] = "-M";
options[3] = "-1.0";
options[4] = "-R";
options[5] = "2-last";
discretize.setOptions(options);
discretize.setInputFormat(newInstances);
Instances newInstances2 = Filter.useFilter(newInstances, discretize);
System.err.println(newInstances2.toSummaryString());
DataSink.write("data/newcpu.arff", newInstances2);
复制代码

其实可以很明显的看出,java调用weka api并不困难,关键还是对于数据挖掘、weka本身的了解和熟悉,对于使用哪种方法,需要什么参数要有一定概念。

weka的扩展,实现自己的过滤器

我使用的weka版本是3.6.6,要是版本不同的话可能有些细节有差异。

一切的开始是Filter类,然后是SimpleFilter,一般情况下我们继承SimpleStreamFilter、SimpleBatchFilter。

这两个的本质差别是一个是全部读入,一个是数据流式处理,但是代码可以完全一样,主要是效率和使用空间上的区别。

举个例子,我希望将所有属性都进行向下取整,继承SimpleStreamFilter,实现和重写一下方法

public Capabilities getCapabilities()
public String globalInfo()
protected Instances determineOutputFormat(Instances inputFormat)
protected Instances process(Instances inst)

完整代码:

复制代码
@Override 
public Capabilities getCapabilities() {
Capabilities capabilities = super.getCapabilities();
capabilities.enableAllAttributes();
capabilities.enableAllClasses();
capabilities.enable(Capability.NO_CLASS);
return capabilities;
}

public String globalInfo() {
return "A simple batch filter that adds an additional attribute 'bla' at the end "
+ "containing the index of the processed instance.";
}

protected Instances determineOutputFormat(Instances inputFormat) {
Instances result = new Instances(inputFormat, 0);
return result;
}

protected Instances process(Instances inst) {
Instances result = new Instances(determineOutputFormat(inst), 0);
for (int i = 0; i < inst.numInstances(); i++) {
double[] values = new double[result.numAttributes()];
for (int n = 0; n < inst.numAttributes(); n++)
values[n] = Math.floor(inst.instance(i).value(n));
result.add(new Instance(1, values));
}
return result;
}
复制代码

效果:

weka3_6


数据挖掘—Weka 的数据库挖掘及数据预处理 基于 Weka 的数据库挖掘及数据预处理 ❤️‍大家好,我是java厂长,今天带你们了走进数据挖掘的世界????????!❤️‍ 关于作者 作者介绍 ???? 博客主页:作者主页 ???? 简介:JAVA领域优质创作者????、一名在校大三学生????、在校期间参加各种省赛、国赛,斩获一系列荣誉????。 ???? 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿????‍????。 文章目录基于 Weka 的数据库挖掘及数据预处理关于作者1、双击下面的 阅读详情

相关推荐

一步一步构建自己的BayesNet代码-基于Weka

首先要把握清楚BayesNet大体上是怎么用:有一个主特征:Class,目的就是判断这个Class的值,BayesNet从训练数据中学习出一个模型,用这个模型做预测,预测测试数据中的Class的值,每个实例是一行,Class T1 T2......Tn T是指特征也就是属性。所以我们的目标任务功能就是自己写代码,完成上述这个过程。好了现在开始。(套用Weka中的解释:WEKA把分类(Classification)和回归(Regression)都放在“Classify”选项卡中,这是有原因的。 在这两个任务中

Skai_优快云的专栏 6842

数据预处理和weka.filters的使用--数据挖掘学习和weka使用(三)

上一篇介绍了arff格式,这是weka专有格式,一般情况需要我们从其他数据源抽取或者获得。weka支持从cvs转化,也可以从数据库中抽取,界面如下图 weka安装目录有一个data目录,里面有一些测试数据,可以用于测试和学习。 导入了数据仅仅是一个开始,我们还需要对数据进行预处理。 数据预处理(data preprocessing) 数据预处理(data preprocessing)是...

weixin_34278190的博客 827

MATLAB与Weka整合指南:机器学习实战

MATLAB是MathWorks公司开发的一款高性能数值计算与可视化软件,其在工程计算、数据分析、算法开发等领域应用广泛。Weka(Waikato Environment for Knowledge Analysis)是一个基于Java的数据挖掘工具包,它提供了大量用于数据挖掘任务的算法,例如分类、回归、聚类、关联规则以及在各种数据集上的特征分析。将MATLAB与Weka整合,可以让用户在MATLAB环境下利用Weka的算法库进行数据分析和挖掘。

weixin_36464343的博客 778

数据预处理实验(WEKA)

【项目内容】在weka环境中,对常见的数据预处理:缺失值处理、标准化、规范化、正则化、离散化进行学习和掌握【方案设计】利用weka自带的数据集实现各种数据预处理。【实验(实训)过程】(步骤、记录、数据、程序等)缺失值处理1.加载数据单击open file,在 weka 的安装目录下选择 data 文件,打开 data 文件,选择 weather.nominal.arff数据集。2.使用数据集编辑器修改数据加载天气数据集后,单击 Preprocess 标签页中的 Edit 按钮,弹出如下对话框,列出全部天气数

weixin_64013032的博客 4223

鼎捷T100二次开发实战:如何给开窗功能加上权限锁(附完整代码)

本文详细解析了鼎捷T100二次开发中开窗功能权限锁的实现方法,提供了两种技术方案:开窗程序重构法和动态WHERE条件注入法,并附上完整代码示例。通过真实案例,帮助开发者解决数据权限细粒度控制的难题,提升ERP系统的安全性和实用性。

weixin_28454475的博客 443

从零构建AI辅助逆向分析环境:JADX-MCP与LLM的实战集成指南

本文详细介绍了如何从零构建AI辅助逆向分析环境,通过集成JADX-MCP与LLM技术,提升Android应用逆向工程效率。文章涵盖环境搭建、插件安装、MCP服务器配置及实战案例分析,帮助开发者快速掌握AI在代码理解、漏洞挖掘和自动化文档生成中的应用。

weixin_27875131的博客 839

weka机器学习-03-探索者(Explorer)界面及数据预处理

点击主界面的Explorer按钮后,显示界面Explorer界面: 初始打开时,只有Preprocess标签可以用 1.各个标签用途 (1)Preprocess(预处理):选择数据集,以不同方式对其进行修改。 (2)Classify(分类):训练用于分类或回归的学习方案,并对其进行评估。 (3)Cluster(聚类):学习数据集聚类方案。 (4)Associate(关联):学习数据关联规则,并对齐进行评估。 (5)Select attributes(选择属性):选择数据集中预测效果最好的部分属性。 (6)

fxqwgdddg123的博客 4268

SimMechanics二连杆仿真避坑指南:Solid模块坐标系设置与Rigid Transform常见错误

本文详细解析了SimMechanics中二连杆平面臂仿真的常见问题,重点探讨Solid模块坐标系设置与Rigid Transform模块的配置陷阱。通过实战案例和MATLAB代码示例,揭示多体系统仿真中的关键错误点,包括坐标系方向定义、参数匹配、端口连接规则等,帮助工程师有效规避仿真风险,提升建模效率。

weixin_29309213的博客 413

数据预处理和weka.filters的使用--数据挖掘学习和weka使用

http://www.cnblogs.com/htynkn/archive/2012/04/02/weka_3.html

AYNGPENG的博客 747

CANoe: Panel的上位机控制方法

本文介绍了不同于IG的报文控制方法,实现了Panel面板的控制模式。

Jonsnow3zz的博客 1409

Stable Diffusion WebUI 安装前准备

大家好,我是水滴~~在安装 stable-diffusion-webui 前需要做一些准备工作,本篇文章主要介绍需要的电脑配置、魔法、安装 Python、安装 Git 等。

水滴的博客 2101

java调用weka filter_数据预处理和weka.filters的使用--数据挖掘学习和weka使用(三)...

上一篇介绍了arff格式,这是weka专有格式,一般情况需要我们从其他数据源抽取或者获得。weka支持从cvs转化,也可以从数据库中抽取,界面如下图weka安装目录有一个data目录,里面有一些测试数据,可以用于测试和学习。导入了数据仅仅是一个开始,我们还需要对数据进行预处理。数据预处理(data preprocessing)数据预处理(data preprocessing)是指在主要的处理以前对...

weixin_39616339的博客 458

学Simulink——基于大数据处理与云计算的场景实例:无人机与云计算中心之间的高效数据传输链路设计

本文以无人机与云计算中心的高效数据传输链路设计为例,手把手指导使用Simulink进行系统级建模。针对智慧城市、灾害监测等场景中无人机采集的海量数据(视频、图像、点云等),构建包含数据源、传输协议、无线链路、云接入和性能分析的五层架构模型。通过智能数据压缩、多链路聚合和QoS优先级调度等关键技术,实现5G+Wi-Fi等多通信技术的自适应切换。仿真结果表明,5G+Wi-Fi链路聚合在城市环境中表现最优,而4G+卫星组合适合偏远地区。该模型为无人机实时数据传输提供了有效的设计方法和优化方向,可拓展至边缘计算、A

xiaoheshang_123的博客 120

关于机器学习的Weka软件详细教程(转载)

转载自https://www.cnblogs.com/hxsyl/p/3307343.html 下载与安装:链接:https://pan.baidu.com/s/14GMxr1mss_bm0bUoLNJnIw 密码:fvby (64位) Weka提供的功能有数据处理,特征选择、分类、回归、聚类、关联规则、可视化等。本文将对Weka的使用做一个简单的介绍,并通过简单的示例,使大家了解使用weka...

Toky_min的博客 5万+

【WRF理论第十九期】内陆湖泊、水体的处理方式

【WRF理论第十九期】内陆湖泊、水体的处理方式

WW、forever的博客 358

C#上位机开发实战全流程:从需求到落地,避坑指南+完整代码

作为一名做了5年工业自动化上位机开发的程序员,我踩过的坑比写过的代码还多——从最初串口通信粘包导致数据错乱,到可视化图表卡顿卡死,再到现场异常崩溃无日志可查,每一次踩坑都是一次血泪教训。今天这篇文章,我会把C#上位机开发的全流程拆解开,从需求分析到通信模块、数据可视化,再到异常处理,每个环节都结合工业实际场景,分享真实项目中能用的方案、完整代码和避坑技巧。不管你是刚入门的新手,还是想优化现有项目的老司机,相信都能有所收获。很多新手做上位机开发,一上来就闷头写代码,最后发现做出来的东西不符合现场需求——比如客

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 996

使用Weka进行数据挖掘

原文地址:使用Weka进行数据挖掘作者:招展如桦 1.简介 数据挖掘、机器学习这些字眼,在一些人看来,是门槛很高的东西。诚然,如果做算法实现甚至算法优化,确实需要很多背景知识。但事实是,绝大多数数据挖掘工程师,不需要去做算法层面的东西。他们的精力,集中在特征提取,算法选择和参数调优上。那么,一个可以方便地提供这些功能的工具,便是十分必要的了。而weka,便是数据挖掘工具中的佼佼者。 Weka的

huangleijay的专栏 721

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

weka之数据预处理

weka在做数据预处理的时候针对attribute提供了多种方式,包括值的各种转换,常用的如下: 1.缺失值处理 weka.filters.unsupervised.attribute.ReplaceMissingValues。 对于数值属性,用平均值代替缺失值,对于nominal属性,用它的mode(出现最多的值)来代替缺失值。   2.规范化处理 类weka.filters.uns...

smallnetvisitor的博客 2516

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Weka 的非监督属性 filters介绍(一)

第一篇博客,想给大家介绍下Weka的非监督属性 filters。Weka 的filters(过滤器)还是非常强大的哟,感觉虽然不如python的属性处理方式那么灵活,但是也是非常好用的。好了,开动吧!对了,不要忘了劳动不易,打赏随意哟! **1、Add** Add的作用是添加一个全部是缺失值的属性(为什么要添加一个全是缺失值的属性呢,没搞明白。) **2、AddCluster**...

m0_37987389的博客 927

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Weka使用过滤器

注:请使用Weka 3-7 API   下载地址 http://www.cs.waikato.ac.nz/ml/weka/import weka.attributeSelection.CfsSubsetEval; import weka.attributeSelection.GreedyStepwise; import weka.core.Instances; import weka.core.c

独自远行 1335

weka---数据预处理

数据预处理包括数据的缺失值处理、标准化、规范化和离散化处理。 1、数据的缺失值处理:weka.filters.unsupervised.attribute.ReplaceMissingValues。 对于数值属性,用平均值代替缺失值,对于nominal属性,用它的mode(出现最多的值)来代替缺失值。 2、标准化(standardize):类weka.filters.unsupervi

mnshenyanping的专栏 1431

weka--数据离散化

NAMEweka.filters.unsupervised.attribute.Discretize SYNOPSISAn instance filter that discretizes a range of numeric attributes in the dataset into nominal attributes. Discretization is by simple b...

2224

WEKA中的数据预处理

数据预处理包括数据的缺失值处理、标准化、规范化和离散化处理。 数据的缺失值处理:weka.filters.unsupervised.attribute.ReplaceMissingValues。对于数值属性,用平均值代替缺失值,对于nominal属性,用它的mode(出现最多的值)来代替缺失值。 标准化(standardize):类weka.filters.unsupervised.attr...

weixin_30752699的博客 347
上一篇: VC6.0配置OpenGL
下一篇: 主成分分析(PCA)原理及推导
Bryan__
博客等级 码龄12年 2500粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值