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

article/2025/10/12 1:21:11

摘要: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”即可获取全部资源文件详细信息。

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


http://chatgpt.dhexx.cn/article/36Ck1vYU.shtml

相关文章

【Android系统源码修改】修改系统默认定位方式

gps 移动网络位置信息 gps 修改为 gps,network 或者 network 或者 是否支持gps \frameworks\base\services\core\java\com\android\server\location\GpsLocationProvider.java ro.wisky.gpssupport 此值设为 false 时不支持,则系统中一些有关 gps 的设置将会被屏蔽…

android 修改 dpi_设计规范 | Android系统

一、基础概念 1.1 屏幕尺寸 屏幕尺寸指的是手机屏幕的物理尺寸,一般用屏幕对角线长度表示,以英寸(inch)为单位。如,小米M4尺寸为5英寸。 1.2 屏幕密度 由于Android属于开源系统,任何用户、开发者、运营商都可以对Android进行专属定制,因此导致国内安卓手机尺寸众多,然而设…

android注入 定位,[原创]修改源码实现全局(无需root)注入躲开注入检测

看这篇文章需要的技能 1.会编译android源码(如果你不愿意编译源码,还有另外一种办法,下面我会提供) 2.会使用substrate或者xposed 以上2个网上资料很多我就不啰嗦了 一、市面上目前的hook和注入工具 市面上目前的hook有substrate,xposed,或者一些开源的自己实现的hook和注入…

python修改app定位_APP自动化中三大定位工具

我们在做APP自动化的时候,定位是很重要的,就像做webUI自动化一样,但是个人觉得app定位比web要复杂点,毕竟app定位表达式写了之后并没有工具验证改表达式是唯一的,所以导致工作量很大 今天主要总结下我们做app自动化需要…

android位置模拟源码,android 模拟定位app 源码

【实例简介】需要在android手机的 开发者模式中 开启 【允许模拟位置】即可,开启允许模拟位置的方法详见: https://jingyan.baidu.com/article/870c6fc306f1f4b03ee4be7f.html 【实例截图】 【核心代码】 package com.xd.mockposition; import android.app.Activity; import …

android 修改imei源码,Android 修改imei、gps等信息分析

之前有朋友希望能修改Android的gps信息,也就是说让其他应用获取gps信息时,取到修改后的信息。一开始听上去感觉挺不靠谱的,后来网上查了下资料,发现还是有人搞定的,主要都是通过古河发布的注入代码,将自己的…

怎么修改android内存,安卓内存修改器怎么用?

安卓内存修改器怎么用?内存搜索是手游修改器普遍都具有的一项功能,也是目前最主流的游戏修改方式,安全、快速、效果显著,并且不会轻易被官方封号,GG助手除了拥有大内高手不断升级制作的插件外,也集成了一个标配的内存修改器。下面学习啦小编给大家分享下具体的方法,希望…

Android模拟地图gps定位

目录 1.判断权限2.开始定位(GPS位置)3.关闭位置4.实现效果 公司OA经常忘了打卡,想起来就到家了,这就很烦… 参考Android官方文档,学习使addTestProvider,setTestProviderLocation,实现简单指定经纬度GPS位置,要是忘了打卡,可不能用这个… 运行环境 设备:小米K30s 系统:Android1…

怎样修改安卓位置服务器,修改安卓定位服务器地址

修改安卓定位服务器地址 内容精选 换一换 安卓模拟器(Android Virtual Device),简称AVD,可以模拟安卓设备并将其运行在服务器上。利用AVD,您可以对安卓应用进行原型设计、开发和测试,而无需使用真实的手机。AVD具备运行安卓应用、adb连接、上网、屏幕、GPS定位、电池、及VN…

安卓修改gps定位模拟百度地图移动

背景: 开发一个骑行app,页面是百度导航,演示需要模拟人骑行,位置不断移动。 位置模拟 核心是这个: for (String provider : mockProviders) {Location mockLocation null;if (location null) {mockLocation new…

第二十期 在Android中修改GPS定位数据的完整方案《手机就是开发板》

https://blog.csdn.net/aggresss/article/details/54323034 现在很多的应用都是基于位置服务的,而且把位置服务作为重要的参考标准,其实这是很不安全的,位置信息的数据未经过任何加密,而且是从我们的手机中发送出去的,…

Android-Framework-GPS定位原理和修改

一、 Android定位功能原理概述 1.1 Android三种定位提供方式。 Android 应用层获取定位可以通过三种定位提供方式:gps,network,passive。 gps –>(GPS,AGPS): GPS位置提供者的名称。该提供商…

HDFS命令

用法 1.hadoop xxx hadoop fs命令可用于其他文件系统,不止是hdfs文件系统内也就是说该命令的使用范围更广,可以用于HDFS、Local FS等不同的文件系统 2.hdfs xxx hdfs dfs命令只用于hdfs文件系统 命令 1.用户命令 fsck:磁盘检查dfs&…

hadoop之hdfs命令

目录 1:创建目录 2、查看文件,ls 没有cd命令, 需要指定绝对路径 3:上传文件 put(要先把数据上传到linux本地然后再上传) 4:下载文件 get 5:复制 cp 6:查看文件内容 cat , 如果数…

hadoop(五)-hdfs命令行基本命令

HDFS是存取数据的分布式文件系统,那么对HDFS的操作,就是文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对HDFS的操作命令类似于Linux的shell对文件的操作,如ls、mkdir、r…

hadoop中上输入hdfs 相关命令显示无法找到问题

问题可能是没有在主目录配置你自己hadoop相关环境变量 解决方法: 1:切换到主目录,输入命令cd ~ 2:输入如下命令进入编辑: 3:在编辑页面最底部,输入如下命令: 4:退出保存编辑输入命令…

HDFS的命令操作

1)基本语法 bin/hdfs dfs 具体命令 2) 常用命令实操 (1)-help:输出这个命令参数 bin/hdfs dfs -help rm (2)-ls: 显示目录信息 hdfs dfs -ls / (3)-mkdir:在hdfs上创…

【hadoop系列】Hadoop HDFS命令

格式:hadoop fs -命令 主要有如下的命令: 命令说明hadoop fs -mkdir创建HDFS目录hadoop fs -ls列出HDFS目录hadoop fs -copyFromLocal使用-copyFromLocal复制本地文件(local)到HDFShadoop fs -put使用-put复制本地(lo…

【hadoop系列】Hadoop HDFS命令

格式:hadoop fs -命令 主要有如下的命令: 命令 说明 hadoop fs -mkdir 创建HDFS目录 hadoop fs -ls 列出HDFS目录 hadoop fs -copyFromLocal 使用-copyFromLocal复制本地文件(local)到HDFS hadoop fs -put 使用-put复制…

HDFS命令行操作

HDFS的命令行接口类似传统的Shell命令,可以通过命令行接口与HDFS系统进行交互,从而对系统中的文件进行读取、移动、创建操作。 命令行接口有两种格式如下: hadoop fs -命令 文件路径 hdfs dfs -命令 文件路径执行hadoop fs 或者 hdfs dfs可…