UCI数据集预处理

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/

❗️❗️❗️知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我

概述

UCI数据集,全称是UCI机器学习库(UCI Machine Learning Repository),是一个由加州大学欧文分校(University of California, Irvine)维护的公开数据集集合,广泛用于机器学习领域的学术研究和教育。这些数据集被设计来测试学习算法,包括数据挖掘和模式识别等任务。

UCI数据集的特点包括:

1、多样性:包含了各种类型的数据集,如分类、聚类、回归、推荐系统等。

2、实用性:数据集来源于真实世界的问题,适用于多种机器学习应用。

3、标准化:数据集通常具有明确的属性说明和数据格式,便于研究者使用。

4、易用性:数据集可以直接从UCI机器学习库的官方网站下载,并且多数数据集已经过预处理,如去除缺失值等。

5、广泛性:UCI数据集被全球的研究者和学生用于测试和比较机器学习算法的性能。

使用UCI数据集时,研究者通常需要进行以下步骤:

选择数据集:根据研究目标选择合适的数据集。
下载数据集:从UCI机器学习库的官方网站下载所需的数据集。
数据预处理:可能包括数据清洗、特征工程、数据划分等。
模型训练与测试:使用数据集对机器学习模型进行训练和测试。

数据集下载

UCI机器学习库的官方网站地址
链接: https://archive.ics.uci.edu/ml/index.php

数据格式及描述

UCI数据集中的数据集通常以以下几种格式提供:

  • .data:纯文本格式,通常由逗号或空格分隔的数值组成。
  • .names:与.data文件相对应,包含每个属性的名称和数据类型(如连续或离散)。
  • .test 和 .train:在一些数据集中,数据被预分割为训练集和测试集,这些文件分别包含训练数据和测试数据。
  • .txt:文本格式,类似于.data文件,但可能包含不同的分隔符或格式。
  • .csv:逗号分隔值的表格格式,适用于可以被电子表格软件或数据分析工具直接读取。

UCI数据集的每个数据集通常包含以下描述信息:

  • 数据集名称:数据集的官方名称。
  • 任务类型:数据集可以用于的机器学习任务,如分类、回归或聚类。
  • 属性信息:每个属性的名称和描述,以及它们的数据类型(数值、类别、文本等)。
  • 数据量:数据集中的实例(样本)数量。
  • 属性数:每个实例包含的特征数量。
  • 标记:数据集中的类别标签或目标变量的描述。
  • 缺失值:数据集中缺失值的表示方式,例如“?”或特定的数值。

以著名的Iris数据集为例,其格式和描述如下

  • 数据格式:.data文件,每行以逗号分隔,包含5个属性值,最后一列为类别标签。
  • 数据描述:
    • 数据集名称:Iris
    • 任务类型:多类分类
    • 属性信息:
      • 花瓣长度
      • 花瓣宽度
      • 花萼长度
      • 花萼宽度
    • 类别(Iris Setosa, Iris Versicolour, Iris Virginica)
    • 数据量:150个实例
    • 属性数:4个特征属性加上1个类别标签
    • 标记:Iris的三个种类
    • 缺失值:该数据集没有缺失值。

在这里插入图片描述

预处理

步骤

UCI数据集预处理是机器学习研究中的重要步骤,它涉及对原始数据进行清洗、转换和准备,以便数据可以被机器学习算法有效利用。UCI数据集预处理关键步骤:

1、数据清洗:这包括处理缺失值、异常值、重复记录和噪声数据。对于缺失值,可以采用删除含有缺失值的记录、填充缺失值(使用均值、中位数、众数或基于模型的预测)等方法。

2、数据转换:将非数值型数据转换为数值型数据,以适应大多数机器学习算法。例如,分类数据可能需要进行独热编码(One-Hot Encoding)。

3、特征缩放:对数据进行归一化或标准化处理,使不同特征具有相同的尺度,提高算法的收敛速度和精度。

4、特征选择:根据模型的需要选择重要的特征,去除无关特征,减少模型复杂度和过拟合的风险。

5、数据划分:将数据集分为训练集和测试集,以便训练模型并评估其性能。

6、数据类型转换:有时需要将数据转换为特定的格式,比如将图像数据转换为可以被神经网络处理的向量形式。

7、数据编码:对于分类问题,标签可能需要转换为机器学习算法可以处理的格式,如将类别名称转换为整数编码。

8、数据集格式:UCI数据集可能以不同的格式存在,如CSV、MAT或TXT等,可能需要将数据转换为适合特定分析工具的格式。

9、数据集探索:在预处理之前,通常需要对数据集进行探索,了解其分布、统计特性和潜在的问题。

10、数据集文档:记录数据预处理的步骤和决策,以便于复查和复现结果。

原始数据集

在这里插入图片描述

预处理后的数据集

在这里插入图片描述

预处理结果

在这里插入图片描述

在这里插入图片描述

预处理代码

% 专门用来处理"纯数字、无缺失"数据集
% 以glass.data为例
% 数据集的下载地址为:
% https://archive.ics.uci.edu/ml/machine-learning-databases/glass/

clear;
clc;

data_name = 'glass';
fprintf('开始处理数据集: %s ...\n', data_name);

n_entradas= 9; % 属性数
n_clases= 6; % 类别数
n_patrons(1)= 214; % 数据量(行数)
n_fich= 1;
fich{1}= 'glass.data'; % 文件路径名

n_max= max(n_patrons);
x = zeros(n_fich, n_max, n_entradas); % 用于存放提取出的属性数据
cl= zeros(n_fich, n_max);             % 用于存放数据标签

n_patrons_total = sum(n_patrons); % 用于显示进度
n_iter=0;

for i_fich=1:n_fich
    f=fopen(fich{i_fich}, 'r'); % 打开文件
    if -1==f
        error('打开数据文件出错 %s\n', fich{i_fich});
    end
    
    for i=1:n_patrons(i_fich) % 循环对每行数据进行处理
        n_iter=n_iter+1;
        fprintf('%5.1f%%\r', 100*n_iter/n_patrons_total); % 显示处理进度
        
        fscanf(f,'%i',1); % 第一个数字为序号,无需记录
        for j = 1:n_entradas
            temp=fscanf(f, ',%f',1); % 读取下一个数据,以逗号分隔
            x(i_fich,i,j) = temp;    % 保存一个数值到x
        end
        t=fscanf(f,',%i',1);
        if t >= 5  % 原数据标记中没有5,所以后面标号需要-1
            t = t - 1;
        end
        
        cl(i_fich,i) = t - 1;  	% 原标记从1开始,改为从0开始
    end
    fclose(f);% 关闭文件
end


%% 处理完成,保存文件
fprintf('现在保存数据文件...\n')
data = squeeze(x); % 数据
label = cl';% 标签
dataSet = [label,data];
dir_path=['./预处理完成/',data_name];
if exist('./预处理完成/','dir')==0   %该文件夹不存在,则直接创建
    mkdir('./预处理完成/');
end
saveData(dataSet,dir_path); % 保存文件至文件夹
fprintf('预处理完成\n')


%% 子函数,用于保存txt/data/mat三种类型文件
function saveData(DataSet,fileName)
% author:wuxian
% DataSet:整理好的数据集
% fileName:数据集的名字

%% Data为整理好的数据集矩阵
mat_name = [fileName,'.mat'];
save(mat_name, 'DataSet')  % 保存.mat文件
data_name = [fileName,'.data'];
save(data_name,'DataSet','-ASCII'); % 保存data文件

% 保存txt文件
txt_name = [fileName,'.txt'];
f=fopen(txt_name,'w');
[m,n]=size(DataSet);
for i=1:m
    for j=1:n
        if j==n
            if i~=m
                fprintf(f,'%g \n',DataSet(i,j));
            else
                fprintf(f,'%g',DataSet(i,j));
            end
        else
            fprintf(f,'%g,',DataSet(i,j));
        end
    end
end
fclose(f);

% save iris.txt -ascii Iris
% dlmwrite('iris.txt',Iris);
end

% 专门用来处理“部分英文字符、无缺失”数据集
% abalone.data为例
% 若有需要,请后台私信或【文末】个人微信公众号联系我
% 专门用来处理“部分英文字符、有缺失”数据集
% adult.data为例
% 若有需要,请后台私信或【文末】个人微信公众号联系我

总结

在实际操作中,数据预处理的具体步骤会根据数据的特点和分析的目标有所不同。例如,对于UCI机器学习库中的“Lung-Cancer”数据集,预处理可能包括处理缺失数据、将数据转换为模型所需的格式、特征归一化等。

值得注意的是,数据预处理是一个迭代的过程,可能需要根据模型训练的结果不断调整和优化。

–end–

说明

本实验(项目)/论文若有需要,请后台私信或【文末】个人微信公众号联系我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂开发的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值