UCI数据集准备方式

UCI数据集准备方式

以Iris数据集为例

获取数据

下载数据

UCI数据集地址

image-20231121083924570

进入Iris页面后,可以查看这个数据集的属性,包括样本数,特征数,适用于回归任务还是分类任务,以及是否有缺失值等等:

image-20231121084059450

下载完成后会得到一个包含4个文件的压缩包,我们主要对iris.data进行处理

image-20231121084324417

导入数据

对于data后缀文件,可以在matlab中打开查看格式:

image-20231121084750866

在知道了数据集的大致内容后,可以使用fopen函数以二进制的形式对文件进行访问:

image-20231121081612175

在得到了文件标识符后,使用textscan函数将已打开的文本文件中的数据读取到元胞数组中,同时更改formatSpec参数,使读取数据的方式与转换设定符相匹配:

image-20231121081749571

f=fopen('iris.data');% 打开文件
data=textscan(f,'%f,%f,%f,%f,%s'); % 读取数据
% 一个数据类型为一个元胞

% data =
% 
%   1×5 cell 数组
% 
%   列 1 至 3
% 
%     {150×1 double}    {150×1 double}    {150×1 double}
% 
%   列 4 至 5
% 
%     {150×1 double}    {150×1 cell}
fclose(f);

对数据进行处理

因为iris数据集最后一列是类别信息,前面都是特征的数据信息,我们对他们进行分开处理:

d_list=[]; % d_list中存放属性值
for i=1:length(data)-1
    d_list=[d_list data{1,i}];
end

label=data{1,length(data)};
% label存放data元胞的最后一列属性

根据label元胞数组的类别信息,找到对应每个类别的索引:

n1=0;n2=0;n3=0;
for j=1:length(label)
   if strcmp(label{j,1},'Iris-setosa')
       n1=n1+1;
       index_1(n1)=j;% 记录“Iris-setosa”类的索引
   elseif strcmp(label{j,1},'Iris-versicolor')
       n2=n2+1;
       index_2(n2)=j;% 记录“Iris-versicolor”类的索引
   elseif strcmp(label{j,1},'Iris-virginica')
       n3=n3+1;
       index_3(n3)=j;% 记录“Iris-virginica”类的索引
   end
end

按照index索引对d_list数据进行重新排序:

class_1=d_list(index_1,:);
class_2=d_list(index_2,:);
class_3=d_list(index_3,:);
new_list=[class_1;class_2;class_3];

根据index的类别为new_list数据添加新的标签列,以数字1代表类别setosa,数字2代表类别versicolor,3代表virginica,保存新的数据文件:

I=[1*ones(n1,1);2*ones(n2,1);3*ones(n3,1)];
Iris=[I new_list];% 为各类添加数字标记

保存整理好的数据集

save Iris.mat Iris % 保存.mat文件
save Iris -ascii Iris; % 保存data文件

整理好的Iris数据集
image-20231121083530564

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值