上一篇介绍了scikit-learn中的几个玩具数据集,本篇介绍scikit-learn提供的一些真实的数据集。
玩具数据集:scikit-learn 基础(01)--『数据加载』之玩具数据集

1. 获取数据集

与玩具数据集不同,真实的数据集的数据不仅数据特征多,而且数据量也比较大,
所以没有直接包含在scikit-learn库中。

虽然scikit-learn中提供了在线加载数据的函数,不过由于网络方面的原因,在线加载几乎不可能成功。
我离线下载了所有scikit-learn的真实数据,并且转换成了缓存文件,经测试可正常离线使用。

已经转换好的离线数据集:

  1. olivetti:https://url11.ctfile.com/f/45455611-930509718-42d985?p=6872
  2. 20newsgroups:https://url11.ctfile.com/f/45455611-930509625-f32241?p=6872
  3. lfw_home:https://url11.ctfile.com/f/45455611-930509715-c10239?p=6872
  4. covertype:https://url11.ctfile.com/f/45455611-930509631-f5e629?p=6872
  5. RCV1:https://url11.ctfile.com/f/45455611-930509760-30d2a2?p=6872
  6. kddcup99-py3:https://url11.ctfile.com/f/45455611-930509652-4f47ea?p=6872
  7. kddcup99_10-py3:https://url11.ctfile.com/f/45455611-930509637-2f0131?p=6872
  8. cal_housing:https://url11.ctfile.com/f/45455611-930509628-395dab?p=6872

:所有文件的下载密码都是:6872

下载上面的 zip 包之后,解压到本地某个目录中(下面的示例是:d:\share\sklearn-realdata),
加载离线数据集的方法如下:

import os
# sklearn一共提供了9种加载真实数据的方法
from sklearn.datasets import fetch_olivetti_faces
from sklearn.datasets import fetch_20newsgroups
from sklearn.datasets import fetch_20newsgroups_vectorized
from sklearn.datasets import fetch_lfw_people
from sklearn.datasets import fetch_lfw_pairs
from sklearn.datasets import fetch_covtype
from sklearn.datasets import fetch_rcv1
from sklearn.datasets import fetch_kddcup99
from sklearn.datasets import fetch_california_housing home_dir = "d:\share\sklearn-realdata"
data = fetch_olivetti_faces(data_home=os.path.join(home_dir, "olivetti"))
print(data) data = fetch_20newsgroups(data_home=os.path.join(home_dir, "20newsgroups"))
print(data) data = fetch_20newsgroups_vectorized(data_home=os.path.join(home_dir, "20newsgroups"))
print(data) data = fetch_lfw_people(data_home=home_dir)
print(data)
data = fetch_lfw_pairs(data_home=home_dir)
print(data) data = fetch_covtype(data_home=home_dir)
print(data) data = fetch_rcv1(data_home=home_dir)
print(data) # 只加载10%的数据
data = fetch_kddcup99(data_home=home_dir)
print(data)
# 加载全部的数据
data = fetch_kddcup99(data_home=home_dir, percent10=False)
print(data) data = fetch_california_housing(data_home=os.path.join(home_dir, "cal_housing"))
print(data)

加载离线数据集的关键在于设置 data_home 参数。

2. 数据集概况

真实数据和之前的玩具数据集相比,它的优势在于数据取自实际应用之中,更能够反映实际问题的复杂性。
用它来学习算法时,可以提前遇到各种调整模型的问题。

scikit-learn一个提供了9 种加载真实数据集的函数,实际是7 种数据集。

2.1. Olivetti 面部数据集

这个数据集来自从 AT&T,包含40 个不同个体的人脸图像的数据集,每个个体有10 张不同的图片。
这些图像是在不同的时间拍摄的,并且具有不同的照明和面部表情(睁开/闭上眼睛,微笑/不微笑)以及面部细节(戴眼镜/不戴眼镜)。

所有的图像都采用黑色均匀的背景,并且个体处于直立的正面位置,允许一定的侧移。
图像被量化为256 个灰度级并以8 位无符号整数的形式存储。
这个数据集的目标是从 0 到 39 的整数,代表图中人物的身份。
由于每一类只有十个样例,这个相对较小的数据集对无监督学习半监督学习具有有趣的挑战性。

此数据集的加载函数:fetch_olivetti_faces

2.2. 新闻组数据集

这是一个常用的文本分类数据集,包含大约20,000 篇新闻文章,这些文章均匀分布在20 个不同的主题中。

这些新闻组数据来源于 1997 年之前的新闻文章,包括各种不同的新闻来源日期
这个数据集的目标是进行文本分类,将每篇文章分配到其对应的主题中。

该数据集通常用于训练和测试文本分类算法,例如朴素贝叶斯分类器、支持向量机或决策树等。
由于数据集的大小适中,它也适用于较小的机器学习模型。

此数据集的加载函数:fetch_20newsgroupsfetch_20newsgroups_vectorized
这两个函数的主要区别在于:

  • fetch_20newsgroups返回的是一个原始的文本列表,每个新闻组的数据都以字符串形式给出
  • fetch_20newsgroups_vectorized返回的是一个可以直接用于机器学习或评估的向量数据集,它已经为文本数据进行了特征提取,返回的是一个稀疏矩阵

2.3. 人脸数据集

这个数据集是一个包含13233 张人脸图像的数据集,用于测试人脸识别算法。
这些图像均来自互联网,包含不同的人脸角度、表情和光照条件。
每张图像都给出了对应的人名,共有5749 个个体,其中大部分人只有一张图像,部分人有多张图像。

此数据集的目标是测试人脸识别算法的准确率,通常用于评估算法的准确性召回率交叉验证等。
由于数据集包含大量的人脸图像和个体,因此也适用于训练和测试深度学习模型。

此数据集的加载函数:fetch_lfw_peoplefetch_lfw_pairs
这两个函数的主要区别在于:

  • fetch_lfw_people数据集中每个人至少有一张图片,每张图片都对应不同的人。这个数据集的目标是训练一个分类器来识别不同的人
  • fetch_lfw_pairs数据集中每个人有两张不同图片。这些图片是在不同的时间、不同的光照条件下拍摄的。这个数据集的目标是训练一个分类器来识别同一个人在不同条件下的图片

2.4. 森林覆盖数据集

这个数据集是一个包含森林覆盖类型信息的植被覆盖类型数据集。
该数据集包含581,012 个样本,每个样本是一个30m x 30m 区域的森林覆盖类型,
包括 7 种类型:云杉/冷杉、洛奇波尔松、黄松、三叶杨/柳树、阿斯彭、花旗松和克鲁姆霍尔茨。

除了前 10 个特征是浮点数外,其余特征都是one-hot 变量。这个数据集的目标是预测给定区域的森林覆盖类型。
适用于分类相关的机器学习算法的测试。

此数据集的加载函数:fetch_covtype

2.5. RCV1 多标签数据集

这个数据集是一个包含1063389 个样本的大规模文本分类数据集。
该数据集由英国广播公司(BBC)和英国邮报(The Guardian)的新闻文章组成,每篇文章都被标记为其中一个类别(例如体育、娱乐、政治等)。

RCV1数据集的目标是训练和测试文本分类算法。由于数据集规模较大,它适合用于评估大型机器学习模型和分布式计算系统的性能。
RCV1数据集包含多个属性,如文本内容、类别标签和样本权重等,可以用于训练多种不同类型的文本分类模型,例如朴素贝叶斯分类器、支持向量机或深度学习模型等。

此数据集的加载函数:fetch_rcv1

2.6. kddcup99 数据集

这个数据集是一个网络入侵检测的数据集,源自DARPA入侵检测评估项目。
该数据集包含了 9 个星期的网络连接数据,分为训练集测试集两部分。

训练集包含了4920917条连接记录,测试集包含了4555136条连接记录。
这些连接记录涵盖了多种网络协议和攻击类型,例如 TCP、UDP、ICMP 等以及 DoS、U2R、R2L 等攻击类型。
数据集中的每个连接记录包含41 个固定的特征属性,包括源 IP 地址、目的 IP 地址、协议类型、字节数等,以及一个类标识符表示该连接是否属于攻击类型。

kddcup99数据集是网络入侵检测领域广泛使用的事实基准数据集,可用于评估和比较不同入侵检测算法的性能。

此数据集的加载函数:fetch_kddcup99
由于此数据集数据量很大,所以默认只加载 10%的数据,若要加载全部数据设置参数percent10=False
本文第一节加载离线数据的示例中也加载示例。

2.7. 加州住房数据集

这个数据集包含了加利福尼亚州 1990 年所有城市的房价信息。
数据集中的每个样本都包含 8 个变量的值:

  1. MedianHouseValue(中位数房价):以 1000 美元为单位。
  2. MedianIncome(中位数收入):以年为单位,以美元为单位。
  3. HouseAge(房龄):以年为单位。
  4. Rooms(房间数):整数。
  5. Bedrooms(卧室数):整数。
  6. Population(人口):以 1000 人为单位。
  7. HousingUnits(房屋数量):以千为单位。
  8. SquareMiles(平方英里):以平方英里为单位。

该数据集被广泛用于房价预测相关的机器学习算法的学习中。
此数据集的加载函数:fetch_california_housing

3. 总结

当机器学习的算法掌握到一定程度的时候,一定会想尝试用真实的数据集来训练模型。
这些经典的真实数据集不仅数据量丰富,而且涵盖的范围广,用来练手和提高自己的能力再好不过。

【scikit-learn基础】--『数据加载』之真实数据集的更多相关文章

  1. Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识

    第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 ...

  2. odoo基础数据加载

    odoo 基础数据加载 这里介绍的odoo基础数据加载分两种方式,一种是演示数据加载,一种是默认数据加载,下面就是详细介绍 首先,当然是创建一个date文件夹 项目目录,右键自定义一个文件夹 XML数 ...

  3. transformers 之Trainer对应的数据加载

    基础信息说明 本文以Seq2SeqTrainer作为实例,来讨论其模型训练时的数据加载方式 预训练模型:opus-mt-en-zh 数据集:本地数据集 任务:en-zh 机器翻译 数据加载 Train ...

  4. ScrollView嵌套ListView,GridView数据加载不全问题的解决

    我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...

  5. python多种格式数据加载、处理与存储

    多种格式数据加载.处理与存储 实际的场景中,我们会在不同的地方遇到各种不同的数据格式(比如大家熟悉的csv与txt,比如网页HTML格式,比如XML格式),我们来一起看看python如何和这些格式的数 ...

  6. flask+sqlite3+echarts3+ajax 异步数据加载

    结构: /www | |-- /static |....|-- jquery-3.1.1.js |....|-- echarts.js(echarts3是单文件!!) | |-- /templates ...

  7. Entity Framework关联查询以及数据加载(延迟加载,预加载)

    数据加载分为延迟加载和预加载 EF的关联实体加载有三种方式:Lazy Loading,Eager Loading,Explicit Loading,其中Lazy Loading和Explicit Lo ...

  8. JQuery插件:遮罩+数据加载中。。。(特点:遮你想遮,罩你想罩)

    在很多项目中都会涉及到数据加载.数据加载有时可能会是2-3秒,为了给一个友好的提示,一般都会给一个[数据加载中...]的提示.今天就做了一个这样的提示框. 先去jQuery官网看看怎么写jQuery插 ...

  9. 如何评估ETL的数据加载时间

    简述如何评估大型ETL数据加载时间. 答:评估一个大型的ETL的数据加载时间是一件很复杂的事情.数据加载分为两类,一类是初次加载,另一类是增量加载. 在数据仓库正式投入使用时,需要进行一次初次加载,而 ...

  10. 浅谈Entity Framework中的数据加载方式

    如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Arc ...

随机推荐

  1. Typora 主题,设置代码块Mac风格三个小圆点

    目录 打造Typora主题 1 typoa样式修改步骤 1.1 第一步打开偏好设置 1.2 第二步打开主题文件夹 2 标题添加颜色 3 表格优化 4 代码块Mac风格三个圆点 5 主题总代码如下: 打 ...

  2. 聚焦Web前端安全:最新揭秘漏洞防御方法

    在 Web 安全中,服务端一直扮演着十分重要的角色.然而前端的问题也不容小觑,它也会导致信息泄露等诸如此类的问题.在这篇文章中,我们将向读者介绍如何防范Web前端中的各种漏洞.[万字长文,请先收藏再阅 ...

  3. Go 语言中排序的 3 种方法

    原文链接: Go 语言中排序的 3 种方法 在写代码过程中,排序是经常会遇到的需求,本文会介绍三种常用的方法. 废话不多说,下面正文开始. 使用标准库 根据场景直接使用标准库中的方法,比如: sort ...

  4. Vim深入使用指南

    Vim深入使用指南 Vim是一款功能强大的文本编辑器,被广泛用于编写和编辑各种类型的文档和代码. 安装Vim 可以操作系统下载并安装Vim.在安装完成后,通过在终端中输入vim命令来启动Vim. Vi ...

  5. Go语言中JSON的反序列化规则

    Unmarshal 解析 func Unmarshal(data []byte, v any) error Unmarshal 解析 JSON 编码的数据,并将结果存储在 v 指向的值中.如果 v 为 ...

  6. Gitbook Android App

    最有用Ionic 2 做了一个Gitbook 混合app, 上线google play的时候提醒我触犯了假冒行为,可能是logo和名字问题吧,放弃: 上线腾讯被认为是h5 app,不是native a ...

  7. vue2实现数据聚合【scatter-clustering】组件封装

    实现如下效果: 效果展示:https://code.juejin.cn/pen/7228568245148581943 如果不会请移步到官网的栗子,请点击查看 直接给大家上代码: 整体代码片段 1 & ...

  8. Redis系列之——高级用法

    文章目录 一 慢查询 1.1 生命周期 1.2 两个配置 1.2.1 slowlog-max-len 1.2.2 slowlog-max-len 1.2.3 配置方法 1.3 三个命令 1.4 经验 ...

  9. 什么是DCloud

    什么是DCloud1.什么是Dcloud2.主要包括 1. 开发工具 2. 前端框架 3. uniCloud 4. 5+app 5. MUI 6. wap2app1.什么是Dcloud 1. Dclo ...

  10. 造轮子之asp.net core identity

    在前面我们完成了应用最基础的功能支持以及数据库配置,接下来就是我们的用户角色登录等功能了,在asp.net core中原生Identity可以让我们快速完成这个功能的开发,在.NET8中,asp.ne ...