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

UCI数据集整理(附论文常用数据集)摘要:UCI数据集作为标准测试数据集经常出现在许多机器学习的论文中,为了更方便使用这些数据集有必要对其进行整理,这里整理了论文中经常出现的数据集,并详细介绍如何使用MATLAB将数据集文件整理成自己需要的格式以及如何使用数据集文件。要点如下UCI数据集介绍用程序整理数据集如何使用数据集文件点击跳转至UCI数据集下载页1.前言UCI数据集是一个常用的机器…

大家好,又见面了,我是你们的朋友全栈君。


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


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

点击跳转至UCI数据集下载页


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


下载链接:博主在面包多网站上的完整资源下载页

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


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


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


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


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


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


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


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


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


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


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


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




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




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


2.2 下载数据

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


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


  • 如若想保存文本文件(.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 = 1×1 cell array{4×1 cell} textscan 返回一个 1×1 元胞数组,其中包含由字符串组成的一个 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)-1
    D=[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:m
    for j=1:n
        if j==n
            fprintf(f,'%g \n',Iris(i,j));
        else
             fprintf(f,'%g,',Iris(i,j));
        end
    end
end

fclose(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文件,不过里面数据的格式稍有不同,读者可以自行尝试一下。整理前后的文件对比情况如下图所示。参照以上代码对于其他数据集的整理程序可在此之上根据实际需要稍作修改。


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


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




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聚类算法详解,后面也会继续介绍。


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



  • 论文中经常出现的数据集本人已经按照以上方法整理完成,现将其一并分享给大家。整理好的数据集如下表所示,每个数据集文件都保存了.mat、.data、.txt三种文件格式方便大家选择下载,以下是下载链接


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


【下载链接】

下载链接1:论文中常见UCI数据集txt版
下载链接2:论文中常见UCI数据集mat版
下载链接3:论文中常见UCI数据集data版

另外在整理过程中搜集了许多其他的UCI数据集,文件都是mat格式方便使用,下图是压缩包内的文件详情,有需要的可以下载,下载链接如下

下载链接4:43个mat格式的UCI数据集


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


    同时本资源已上传至面包多网站,如果您没有积分或C币或者没有会员,可以点击以下链接获取。完整文件下载链接如下:

下载链接:博主在面包多网站上的完整资源下载页

公众号获取
    本人微信公众号已创建,扫描以下二维码并关注公众号“AI技术研究与分享”,后台回复“UC20180830”即可获取全部资源文件信息。


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


5. 结束语

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154078.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 虚拟机 XP激活

    虚拟机 XP激活1.安装原版windowsxp2.打开注册表regedit3.找到主键Hkey_Local_Machine\Software\Microsoft\WindowsNT\CurrentVersion\WPAEvents\4.删除子键lastWPAEventLoged(如果有的话)5.修改子键OOBETimer键值为:ffd571d68b6a8d6fd…

  • 均方误差(MSE)「建议收藏」

    均方误差(MSE)「建议收藏」均方误差单独扽概念是很简单的,这里只做介绍,更深一步的内容会在后面列出来。SSE(和方差、误差平方和):ThesumofsquaresduetoerrorMSE(均方差、方差):MeansquarederrorRMSE(均方根、标准差):Rootmeansquarederror数理统计中均方误差是指参数估计值与参数真值之差平方的期望值,记为MSE。MSE是衡量“…

  • C# DateTimePicker:日期时间控件「建议收藏」

    C# DateTimePicker:日期时间控件「建议收藏」日期时间控件(DateTimePicker)在时间控件中的应用最多,主要用于在界面上显示当前的时间。Format属性提供了4个属性值,如下所示。Short:短日期格式,例如2017/3/1;Long:长日期格式,例如2017年3月1日;…

  • 牛客国庆集训派对Day6 I.清明梦超能力者黄YY(树剖)「建议收藏」

    牛客国庆集训派对Day6 I.清明梦超能力者黄YY(树剖)「建议收藏」题目:https://www.nowcoder.com/acm/contest/206/I正难则反。问你倒数第k次的颜色,正着来搞不定,那就转换成“倒着来的第k次”。使用树剖将这棵树丢进线段树里,不维护染色,而是维护更新的次数(因为除了倒数第k次的颜色,其他的根本没用啊!!!),然后把区间最小值pushUp到树顶。更新完染色次数之后,用树顶来判整个区间里是否存在已经被更新了k次的节点,如果…

  • c++ map与unordered_map区别及使用

    c++ map与unordered_map区别及使用转自:https://blog.csdn.net/BillCYJ/article/details/78985895需要引入的头文件不同map:#include<map>unordered_map:#include<unordered_map>内部实现机理不同map:map内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二…

  • input元素的oninput事件和onchange事件

    input元素的oninput事件和onchange事件input元素的oninput事件和onchange事件1、input元素上绑定事件的三种方式:第一种:直接在元素标签上添加oninput属性,属性值为处理事件函数的调用<inputtype=”text”id=”input”oninput=”handleInput()”></input>functionhandleInput(){ //处理事件代码…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号