摘要:UCI数据集作为标准测试数据集经常出现在许多机器学习的论文中,为了更方便使用这些数据集有必要对其进行整理,这里整理了论文中经常出现的数据集,并详细介绍如何使用MATLAB将数据集文件整理成自己需要的格式以及如何使用数据集文件。要点如下,博主另一篇博文UCI数据集详解及其数据处理(附148个数据集及处理代码)有更加详细的介绍。

文章目录

  • 1. 前言
  • 2. UCI数据集介绍
    • 2.1 简要认识
    • 2.2 下载数据
  • 3. 用程序整理数据集
  • 4. 如何使用数据集文件
  • 5. 下载链接

UCI数据集整理与MATLAB实现

代码介绍及演示视频链接:https://www.bilibili.com/video/BV1wS4y1Y7Sn/(正在更新中,欢迎关注博主B站视频)


1. 前言

UCI数据集是一个常用的机器学习标准测试数据集,是加州大学欧文分校(University of CaliforniaIrvine)提出的用于机器学习的数据库。机器学习算法的测试大多采用的便是UCI数据集了,其重要之处在于“标准”二字,新编的机器学习程序可以采用UCI数据集进行测试,类似的机器学习算法也可以一较高下。其官网地址如下:
website: UCI Machine Learning Repository

尽管从UCI数据集官网可以很容易找到许多想要的数据集,但要将其提供给自己的程序使用还需要了解数据的详细信息。UCI数据集中并非所有数据集都是以相同格式存于文件中的,读取和使用文件方式不一,因此有必要对数据文件稍作整理,特此总结。


2. UCI数据集介绍

2.1 简要认识

要使用数据集中的数据首先需要分清标记和属性值。如点击进入数据集官网:UCI数据集官网选取数据集Iris

该数据集详情页面如下,从表中数据显示该数据集的数据量为150,属性数为4

而再往下的Data Set information 中则介绍了该数据集的详细信息,下面的Attribute Information(属性信息)是我们需要关注的,如下图

其中1-4分别说明了四个属性所代表的实际意义,而5则说明了该数据集分为三类:Iris Setosa、Iris VersicolourIris Virginica。认识到这些,再去看具体的Iris文件中的数据便清楚明了了,点击标题Iris Data Set下方的Data Folder进入文件位置页面,选择iris.data(该文件为Iris数据集数据存放文件)

进入到数据详情页面,如下图。可以看到文本的排列:每行5个数以逗号分隔,共150行,每行的前4列(红框内的数)分别对应4个属性值,而最后一列(绿色框内)为每个数据所属类别(或称标记)。当前看到的都是“Iris-setosa”一类的数据,往下翻则可看到”Iris-versicolour“和”Iris-virginica

  • 其他的数据集的情况与iris相似,而各个数据集属性数或类别数各有差异。值得注意的是,有些数据集每行数据中间的分隔符并非都是“ ,”(逗号),还有可能是“ ”(空格);有些数据集的标记可能是用数字表示的,如1,2,… 其位置也可能出现在第1列(也可能文件中未给出标记,需自行加上);还有的可能属性值都是英文字符,分别如下所示的wine数据集、heart-disease数据集、adult数据集。要想以统一的程序使用这样内部格式不一的数据集,就需要在程序使用前根据实际情况对数据集进行调整了。
    总之,各数据集可能各有差异,按照上面的步骤了解了各自的注释信息,找到属性数、分类数、标记等重要信息使用起来便顺利得多。

2.2 下载数据

要保存网站上的数据文件,可以进入某个数据集的文件位置页面,如Iris文件位置,选择“iris.data”,右键,链接另存为,即可下载该数据集文件。如下所示,当前保存的文件格式为“.data”文件。

  • 如若想保存文本文件(.txt),可先自行新建一个文本文件,直接点击iris.data进入数据详情页面,直接全选所有数据将数据粘贴到自己新建的文本文件中。至于其他文件格式如.mat,.xls则可借助MATLAB先读取文件数据然后转存为其他格式,在后面章节也会介绍。

3. 用程序整理数据集

本节介绍如何使用MATLAB对数据集进行整理,下面以对Iris数据集的整理为例介绍。

首先从官网下载数据集,例如前面下载的iris.data或者自行复制的txt文件(自命名iris.txt),在文件所在文件夹新建一个.m文件。整理程序的功能是读取原文件数据将最后一列的英文标记按每类改为1-3的数字并将标记放在第一列,重新存储到新的txt文件,顺便另存为.mat以及.xls文件。

从前面可知,iris文件的最后列为英文字母,如果直接采用MATLABload( )函数将导致最后一列文本未知错误,所以这里采用textscan( )函数。textscan( )函数调用方式如下

textscan( ): 读取任意格式的文本文件。通过此函数,能够以一次读取一个块的方式读取文件,并且每个块可以具有不同的格式。
使用方法:首先打开文本文件以进行读取,fopen 返回文件标识符。
fileID = fopen('test80211.txt','r');
读取 4 个简介行,这些行是由换行符分隔的字符串。
Intro = textscan(fileID,'%s',4,'Delimiter','\n')
Intro = 1x1 cell array{4x1 cell} textscan 返回一个 1x1 元胞数组,其中包含由字符串组成的一个 4×1 元胞数组。
然后读取每个块的内容即可取出数据了,最后关闭文件。
fclose(fileID);
—— 引自 《MATLAB中文文档》

Iris数据集进行整理的MATLAB程序如下。首先利用textscan()读取数据data为 1 * 5 cell 的元胞数组,每个元素是150*1 double 的数组,存储了一列上的所有数据。明显地,最后一个元素就是全部的标记数组,我们遍历这些标记并把带同一类标记的数据的索引记录下来。根据记录下的每类所有数据的索引便可取出每一类的数据并重新加上数字的标记。

  • textscan()也可以读取txt的文件数据,所以第6行的代码中的文件名同样可以是txt文件,如第5行代码所示。
clear
clc
% 整理iris数据集% f=fopen('iris.txt');
f=fopen('iris.data');% 打开文件
data=textscan(f,'%f,%f,%f,%f,%s'); % 读取数据D=[];% D中存放属性值
for i=1:length(data)-1D=[D data{1,i}];
end
fclose(f);lable=data{1,length(data)};
n1=0;n2=0;n3=0;
% 找到每类数据的索引
for j=1:length(lable)if strcmp(lable{j,1},'Iris-setosa')n1=n1+1;index_1(n1)=j;% 记录下属于“Iris-setosa”类的索引elseif strcmp(lable{j,1},'Iris-versicolor')n2=n2+1;index_2(n2)=j;elseif strcmp(lable{j,1},'Iris-virginica')n3=n3+1;index_3(n3)=j;end
end% 按照索引取出每类数据,重新组合
class_1=D(index_1,:);
class_2=D(index_2,:);
class_3=D(index_3,:);
Attributes=[class_1;class_2;class_3];I=[1*ones(n1,1);2*ones(n2,1);3*ones(n3,1)];
Iris=[I Attributes];% 为各类添加数字标记save Iris.mat Iris % 保存.mat文件
save Iris -ascii Iris; % 保存data文件f=fopen('iris1.txt','w');
[m,n]=size(Iris);
for i=1:mfor j=1:nif j==nfprintf(f,'%g \n',Iris(i,j));elsefprintf(f,'%g,',Iris(i,j));endend
endfclose(f);% save iris.txt -ascii Iris
% dlmwrite('iris.txt',Iris);

经过代码1-42行的操作,原来带有的英文标记的数据便由相应的数字标记代替了并放在了第一列的位置上。这里原来标记为Iris-setosa的数据重新标记为1,Iris-versicolor标记为2,Iris-virginica标记为3。

代码45行和46行分别将整理好的数据保存为.mat文件和.data文件;第49-61行是通过文件操作的方式利用循环逐行逐列将数据打印到txt文件中,每个数据中间由逗号分隔,每行5个数据打印完则回车至下一行。

当然也可以采用64行或65行的方式保存txt文件,不过里面数据的格式稍有不同,读者可以自行尝试一下。整理前后的文件对比情况如下图所示。参照以上代码对于其他数据集的整理程序可在此之上根据实际需要稍作修改。

4. 如何使用数据集文件

整理好了数据文件,使用起来就比较简单了,其实前面的代码中已经读取过文件中的数据了。经过整理现在文件中的数据都是数字形式,在MATLAB中可以通过load( )函数直接读取了,如下代码

iris_data=load('iris1.txt');
lable_iris=iris_data(:,1);
attributes_iris=iris_data(:,2:end);

iris_data包含了标记和属性值的全部数据,lable_irisiris_data的第一列所有元素,即每个数据的标记,attributes_iris取自其后的所有列上的元素,即所有属性值的数组。具体的使用UCI数据集的机器学习算法实例可参考本人前面一篇博文Kmeans聚类算法详解,后面也会继续介绍。


5. 下载链接

论文中经常出现的数据集本人已经按照以上方法整理完成,现将其一并分享给大家。整理好的数据集如下表所示,每个数据集文件都保存了.mat、.data、.txt三种文件格式方便大家选择下载,另外在整理过程中搜集了许多其他的UCI数据集,文件都是mat格式方便使用,下图是压缩包内的文件详情,具体可见如下参考文章或参考视频。

参考文章:https://zhuanlan.zhihu.com/p/568797582

参考视频:https://www.bilibili.com/video/BV1wS4y1Y7Sn/

本人微信公众号已创建,点击文末卡片关注“AI技术研究与分享”,后回复“UC20180830”即可获取全部资源文件详细信息。

由于博主能力有限,博文中提及的方法与代码即使经过测试,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。

UCI数据集整理(附论文常用数据集)相关推荐

  1. UCI数据集整理(论文常用数据集)

    UCI数据集是一个常用的机器学习标准测试数据集,是加州大学欧文分校(University of CaliforniaIrvine)提出的用于机器学习的数据库. UCI数据集作为标准测试数据集经常出现在 ...

  2. celeba数据集_人脸识别常用数据集介绍(附下载链接)及常用评估指标

    为什么要聊到数据集这个话题..因为数据集的noise对训练效果的影响很大!很长一段时间MegaFace的效果都上不去,就是因为数据集噪声的原因.而且自己在训练人脸的时候,如果不对数据集的噪声和属性有一 ...

  3. 机器学习cnn数据集_33个机器学习常用数据集CV/NLP

    若是本文能帮助到大家,希望可以关注小编 并转发分享!(thanks) 现如今构建人工智能或机器学习系统比以往的时候更加容易.普遍存在的尖端开源工具如 TensorFlow.Torch 和 Spark, ...

  4. 漏洞挖掘论文常用数据集

    Author:ZERO-A-ONE Date:2021-03-31 一.简介 最近因为写有关于模糊测试的论文,需要相关数据集,故进行了一些调研和收集,此贴长期更新于Gtihub,地址如下 https: ...

  5. 时间序列论文常用数据集

    下载地址:laiguokun/multivariate-time-series-data. electricity (行,列) = (26304, 321) 每日的用电量有一定的季节性,图中只画出 1 ...

  6. 人脸识别:insightface自定义数据集制作 | 附练手数据集

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自|小白玩转python 01 人脸识别简介 简单来讲,人脸识别 ...

  7. 转:UCI数据集和源代码数据挖掘的数据集资源

    <UCI数据集和源代码> UCI数据集是一个常用的标准测试数据集,下载地址在 http://www.ics.uci.edu/~mlearn/MLRepository.html 我的主页上也 ...

  8. 【机器学习】机器学习公共数据集整理

    awesome public data sets github上边超过35k star的开源项目,其中包含了金融.医学.能源.时间序列等领域的公共数据集的集合. 链接:https://github.c ...

  9. 图像融合常用数据集整理

    图像融合常用数据集整理 先附上整理常用数据集时绘制的思维导图 本篇博客主要整理图像融合常用数据集整理 图像融合系列博客还有: 图像融合论文及代码整理最全大合集参见:图像融合论文及代码整理最全大合集 图 ...

  10. 【图像处理算法常用数据集】整理第一弹

    目录 一.通用 二.自己整理的一些数据集 Berkeley Segmentation Dataset (BSDS) Set14 Urban 100 Kodak dataset CBSD68 DIV2K ...

最新文章

  1. jQuery 3.1.1 官方下载地址
  2. 开始新的BLOG了!!
  3. 使用maven运行单元測试总结
  4. 【Java例题】7.6文件题3-文本文件统计
  5. 设计模式之迭代子模式
  6. 据说这份高考卷,只有程序员能得满分!
  7. 匿名函数 lambda
  8. Docker学习文档之三 其他相关-参考
  9. 蚂蚁爬绳问题 java_趣味数学网
  10. Java重构面向过程代码_代码重构那些事儿
  11. Gephi下载百度云加速,舒服了
  12. WordPress文章/页面浏览量计数器插件Post Views Counter
  13. Google Earth Engine(GEE)——估计未来人口密度(越南2100年人口预测)
  14. Entity FrameWork Core使用 Include查询关联数据以及机理。
  15. 【no-descending-specificity】问题
  16. 学习Python,怎能不懂点PEP呢?
  17. 列表表达式爬取红牛分公司数据
  18. macbook pro m1 在 EXCEL 中安装 Excel2Latex
  19. MTK方案上基于Android N拦截黑名单中的短/彩信的方法
  20. android 7.0关机动画,Android 修改系统关机动画的实现

热门文章

  1. Object-C 介绍
  2. 散乱插值及MATLAB绘图函数
  3. 使用Excel进行线性规划
  4. 计算机知识课程简单课件,计算机基础知识实用课件.ppt
  5. 推荐好书:《电子设计从零开始》
  6. 【转】Skyline软件介绍
  7. installshield2020打包教程
  8. 小子注入,怎么使用呢?
  9. 硬盘整数分区计算方法(精确硬盘分区算法)
  10. 软件设计师考试感想随笔