weka和matlab完成完整分类实验

本文

本文简单介绍数据集介绍、weka的使用、weka与LIBSVM、matlab与LIBSVM以及分类的若干细节问题。

1. 数据集介绍

打开网址UCI数据集,如下图。 
UCI数据集主页 
从右下角可以看到Iris这个数据集,这是使用最多的数据集,目前下载量超过了82万。

打开之后跳转到这个数据集的详细信息,如下图。 
Iris详细信息 
下面的表格具有如下信息 
- 数据是多变量的 
- 数据用实数表示 
- 这是个分类问题 
- 一共有150条数据 
- 每条数据有四种属性 
- 所有数据都没有缺失 
- 这是个关于生活的分类问题,是鸢尾花的分类

从表格下面可以得到更多关于这个数据集的信息,比如数据集的来源、数据集的介绍、数据集中数据的含义以及使用该数据集的论文。

从数据的含义可以看出每条数据都有四种属性,分别是花萼的长度、花萼的宽度、花瓣的长度和花瓣的宽度,单位是厘米。

这是个三分类问题,表示Setosa、VersiColour和Virginica这三种鸢尾花,每种花有50条数据,一共150条数据。

点击图2中的Data Folder,如下图。 
Iris Directory 
下载其中的iris.datairis.names

打开其中的iris.data,如下图。 
Iris Data

2. 数据处理

下载安装weka,首先检测电脑是否安装java运行时环境jre,在windows操作系统下打开cmd,输入java -version,如果已安装选择不带jre的weka,否则选择带jre的weka。

打开后首页如下图。 
weka主界面

点击Explorer,再点击open file,打开iris.data,显示如下图的错误。 
weka错误

这需要修改.data格式为.arff格式,在iris.data最前面添加如下内容。

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@RELATION</span> iris<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@ATTRIBUTE</span> sepallength <span class="hljs-constant" style="box-sizing: border-box;">REAL</span>
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@ATTRIBUTE</span> sepalwidth  <span class="hljs-constant" style="box-sizing: border-box;">REAL</span>
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@ATTRIBUTE</span> petallength  <span class="hljs-constant" style="box-sizing: border-box;">REAL</span>
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@ATTRIBUTE</span> petalwidth <span class="hljs-constant" style="box-sizing: border-box;">REAL</span>
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@ATTRIBUTE</span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span>  {<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Iris</span>-<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">setosa</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Iris</span>-<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">versicolor</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Iris</span>-<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">virginica</span>}</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@DATA</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>

并且将.data的后缀名强制改成.arff。

从weka中打开iris.arff,如下图。 
Iris in weka

关于weka每一个按钮的作用,每一个区域的含义参考使用weka进行数据挖掘这篇帖子,介绍的非常详细。

点击最上方的Classify按钮,选择Logistic(逻辑回归)分类方法,在Test options中选择Percentage split,66%。这样weka自动将大约2/3的数据作为训练集,大约1/3的数据作为测试集,采用逻辑回归作为分类方法,结果如下图。 
Logistic Split

另外也可以选择Cross-validation,Folds设置为10,这是10-fold的交叉验证,首先随机将所有数据随机分成10份,将其中9份作为训练集,另外1份作为测试集,按照逻辑回归进行10次分类实验,最终保证每个数据都能作为测试集并且仅有一次,将10次分类结果综合起来得到最终的分类结果,如下图,显示了分类结果中最重要的部分。 
Logistic cross-validation 
- Correctly Classified Instances表示分类正确率 
- Incorrectly Classified Instances表示分类错误率 
- TP Rate是True Positive Rate的缩写,表示本来是正样本,结果也被分类成正样本的比例 
- FP Rate是False Positive Rate的缩写,表示本来是负样本,结果却被分类成了正样本的比例 
- Precision表示查准率,公式为Precision = TPTP+FP,含义是被分类为正样本中真正的正样本的比例 
- Recall表示查全率,公式为Recall = TPTP+FN,FN Rate是False Negative Rate的缩写,表示本来是正样本,结果却被分类成负样本的比例,所以Recall的含义是真正的正样本占整个数据集(分类正确的和错误的)中正样本的比例 
- F-Measure的公式是2PRP+R,是很常用的判断分类效果好坏的指标 
- 最下方有比较直观的分类结果矩阵,斜对角上的数据表示分类正确的数量,其余表示分类错误的数量

3. weka+LIBSVM

在weka中,除了Logistic分类方法外,还可以选择Libsvm这种分类方法,需要到台湾大学林智仁教授的网站下载这个工具包。

否则会出现Problem evaluating classifier:libsvm classes not in CLASSPATH的错误,可以参考解决方法,实验结果如下图。 
weka实验结果

4. matlab+LIBSVM

通常情况下需要调整Libsvm中-c和-g这两个参数来获得更好的分类效果,在weka中只能手动调整这两个参数,这样效率很低,所以更好的方法是在matlab中采用Libsvm的方法,参考配置流程。

配置完成后,首先另外创建一个.txt文档,包括之前iris.data的内容,但不包括iris.arff中前面的声明部分,另外将.txt中所有英文的分类替换成数字,这样matlab才能处理,Iris-setosa替换成1,Iris-versicolor替换成2,Iris-virginica替换成3。

用matlab来完成Iris的分类并且寻找最佳的-c和-g两个参数,博客参考Libsvm中c&g的调整,程序参考Github,实验结果如下。

<code class="hljs mel has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">best cost = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0314</span>
best <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">gamma</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.0625</span>
best accuracy = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">98.6667</span>%
cost <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> weka = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">gamma</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> weka = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.0</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>

从实验结果看出,通过调整-c和-g两个参数将weka中默认参数的分类准确率提高了2%。

5. 总结

本文介绍了数据集的来源和处理,并且用weka自带的两种方法进行了分类实验,其中libsvm的方法在matlab上进行了改进,提高了2%的正确率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 中的绘图matplotlib mayavi库

python matplotlib 图像可视化 python-data-visualization-course Interactive Web Plotting for Python Interactive Web Plotting for Python-github 待整理的 Matplotlib Introduction to Matplotlib and basic line matplotlib——一个 2D 绘图库&#xff0c;可产生…

ubuntu 16.04 配置Python2.7 和 Python3.5 同时调用OpenCV

安装OpenCV OpenCV 官网&#xff0c;下载见 SourceForge and GitHub。 若使用官网版本安装不成功&#xff0c;则可试试Github版本。 或者 git clone https://github.com/Itseez/opencv.git 安装依赖库 sudo apt-get -y install libopencv-dev sudo apt-get -y install bui…

生成特定分布随机数的方法:Python seed() 函数numpy scikit-learn随机数据生成

描述 seed() 方法改变随机数生成器的种子&#xff0c;可以在调用其他随机模块函数之前调用此函数。。 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ) 注意&#xff1a;seed(()是不能直接访问的&#xff0c;需要导入 random 模块&#xff0c;然后通过 ra…

scipy.ndimage.zoom上采样与下采样

插值 Bilinear interpolation would be order1, nearest is order0, and cubic is the default (order3). 举例说明 import numpy as np import scipy.ndimagex np.arange(64).reshape(8,8)print Original array: print xprint Resampled by a factor of 2 with nearest i…

UFLDL教程: Exercise: Sparse Autoencoder

自编码可以跟PCA 一样&#xff0c;给特征属性降维 一些matlab函数 bsxfun:Cbsxfun(fun,A,B)表达的是两个数组A和B间元素的二值操作&#xff0c;fun是函数句柄或者m文件&#xff0c;或者是内嵌的函数。在实际使用过程中fun有很多选择比如说加&#xff0c;减等&#xff0c;前面需…

UFLDL教程:Exercise:PCA in 2D PCA and Whitening

相关文章 PCA的原理及MATLAB实现 UFLDL教程&#xff1a;Exercise:PCA in 2D & PCA and Whitening python-A comparison of various Robust PCA implementations Deep Learning and Unsupervised Feature Learning Tutorial Solutions 统计学的基本概念 统计学里最基本…

UFLDL教程:Exercise:Softmax Regression

Softmax分类函数的Python实现 Deep Learning and Unsupervised Feature Learning Tutorial Solutions 逻辑回归假设函数 在线性回归问题中&#xff0c;假设函数具有如下形式&#xff1a; 在 logistic 回归中&#xff0c;我们的训练集由m 个已标记的样本构成&#xff1a;&#…

UFLDL教程: Exercise:Self-Taught Learning

自我学习 Deep Learning and Unsupervised Feature Learning Tutorial Solutions 1.先训练稀疏自编码器提取特征&#xff0c;再把特征和label给softmax分类器进行训练&#xff0c;最后用test数据集进行测试。 2.由于实际应用中找到大量有标注的样本是非常困难的&#xff0c;所…

UFLDL教程: Exercise: Implement deep networks for digit classification

Deep networks Deep Learning and Unsupervised Feature Learning Tutorial Solutions 深度网络的优势 比单层神经网络能学习到更复杂的表达。不同层的网络学习到的特征是由最底层到最高层慢慢上升的。比如在图像的学习中&#xff0c;第一个隐含层网络可能学习的是边缘特征&am…

UFLDL教程: Exercise:Learning color features with Sparse Autoencoders

Linear Decoders Deep Learning and Unsupervised Feature Learning Tutorial Solutions 以三层的稀疏编码神经网络而言&#xff0c;在sparse autoencoder中的输出层满足下面的公式 从公式中可以看出&#xff0c;a3的输出值是f函数的输出&#xff0c;而在普通的sparse autoenc…

UFLDL教程:Exercise:Convolution and Pooling

Deep Learning and Unsupervised Feature Learning Tutorial Solutions CNN的基本结构包括两层 其一为特征提取层&#xff0c;每个神经元的输入与前一层的局部接受域相连&#xff0c;并提取该局部的特征。一旦该局部特征被提取后&#xff0c;它与其它特征间的位置关系也随之确…

莫凡机器学习课程笔记

怎样区分好用的特征 避免无意义的信息避免重复性的信息避免复杂的信息 激活函数的选择 浅层神经网络&#xff0c;可以随便尝试各种激活函数 深层神经网络&#xff0c;不可随机选择各种激活函数&#xff0c;这涉及到梯度爆炸和梯度消失。&#xff08;给出梯度爆炸和梯度消失的…

UFLDL教程:数据预处理

数据预处理是深度学习中非常重要的一步&#xff01;如果说原始数据的获得&#xff0c;是深度学习中最重要的一步&#xff0c;那么获得原始数据之后对它的预处理更是重要的一部分。 一般来说&#xff0c;算法的好坏一定程度上和数据是否归一化&#xff0c;是否白化有关。 数据归…

深度学习笔记(待续)

背景知识 好的特征应具有不变性&#xff08;大小、尺度和旋转等&#xff09;和可区分性&#xff09;&#xff1a;例如Sift的出现&#xff0c;是局部图像特征描述子研究领域一项里程碑式的工作。由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性&#xff0c;并…

人工智能泰斗迈克尔·乔丹分享机器学习要义:创新视角,直面挑战

2017年6月21日至22日&#xff0c;腾讯云未来峰会在深圳举行。人工智能领域的世界级泰斗迈克尔欧文乔丹&#xff08;Michael I.Jordan&#xff09;进行了主题为“机器学习&#xff1a;创新视角&#xff0c;直面挑战”的演讲&#xff0c;与大家分享他对人工智能的未来与挑战的见解…

Tensorflow官方文档---起步 MNIST示例

Tensorflow •使用图 (graph) 来表示计算任务. • 在被称之为 会话 (Session) 的上下文 (context) 中执行图. • 使用 tensor 表示数据. • 通过 变量 (Variable) 维护状态. • 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据 综述 Ten…

Git 版本管理

相关文章 版本管理 github访问太慢解决方案 Material for git workshop GitHub秘籍 安装-Git版本管理 Git官网安装说明 Linux 系统安装 # 如果你的 Linux 是 Ubuntu: $ sudo apt-get install git-all# 如果你的 Linux 是 Fedora: $ sudo yum install git-all 如果是其他…

tensorflow:Multiple GPUs

深度学习theano/tensorflow多显卡多人使用问题集 tensorflow中使用指定的GPU及GPU显存 Using GPUs petewarden/tensorflow_makefile tf_gpu_manager/manager.py 多GPU运行Deep Learning 和 并行Deep Learning&#xff08;待续&#xff09; Multiple GPUs 1. 终端执行程序…

Tensorflow一些常用基本概念与函数

参考文献 Tensorflow一些常用基本概念与函数 http://www.cnblogs.com/wuzhitj/archive/2017/03.html Tensorflow笔记&#xff1a;常用函数说明&#xff1a; http://blog.csdn.net/u014595019/article/details/52805444 Tensorflow一些常用基本概念与函数&#xff08;1&#…

ubuntu16.04 Nvidia 显卡的风扇调速及startx的后果

问题描述 #查看nvdia GPU 显卡状态 watch -n 10 nvidia-smi 发现显卡Tesla k40c的温度已经达到74&#xff0c;转速仅仅只有49%。 查看Tesla产品资料&#xff0c;Tesla K40 工作站加速卡规格 &#xff0c;可知 所以需要调整风扇速度来降温。 然而官方驱动面板里也没有了风扇调…