上一篇介绍了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. 《CUDA编程:基础与实践》读书笔记(1):CUDA编程基础

    1. GPU简介 GPU与CPU的主要区别在于: CPU拥有少数几个快速的计算核心,而GPU拥有成百上千个不那么快速的计算核心. CPU中有更多的晶体管用于数据缓存和流程控制,而GPU中有更多的晶体管 ...

  2. 【Unity3D】反射和折射

    1 前言 ​ 立方体纹理(Cubemap)和天空盒子(Skybox)中介绍了生成立方体纹理和制作天空盒子的方法,本文将使用立方体纹理进行采样,实现反射.菲涅耳反射和折射效果.另外,本文还使用了 Gra ...

  3. 产品代码都给你看了,可别再说不会DDD(四):代码工程结构

    这是一个讲解DDD落地的文章系列,作者是<实现领域驱动设计>的译者滕云.本文章系列以一个真实的并已成功上线的软件项目--码如云(https://www.mryqr.com)为例,系统性地讲 ...

  4. WPF-实现屏幕截图(一)

    源码路径:https://gitee.com/LiuShuiRuoBing/wpf_screen_cut 实现功能 实现基本的截屏窗体 鼠标随意选择截图区域 鼠标抬起时弹出按钮区 快捷键Ctrl+Al ...

  5. 银河麒麟SP2 auditd服务内存泄露问题

    这几天遇到基于海光服务器的银河麒麟V10 SP2版本操作系统出现内存无故增长问题. 排查发现auditd服务,占用了大量内存. 我的环境是银河麒麟V10 SP2 524,audit版本audit-3. ...

  6. 使用GPU搭建支持玛雅(Maya)和Adobe AI,DW,PS的职校云计算机房

    背景 学校为职业学校,计算机教室需要进行Maya.Adobe Illustrator.Adobe Dreamweaver.Adobe PhotoShop等软件的教学.每个教室为35用户.资源需求为4核 ...

  7. 快速搭建SpringBoot3.x项目

    写在前面 上一小节中我们从0到1 使用Vite搭建了一个Vue3项目,并集成了Element Plus 实现了一个简单的增删改查页面. 这一篇中我们将使用IDEA快速搭建一个SpringBoot3.x ...

  8. Python Flask 上下文管理源码分析

    Python Flask 上下文管理源码分析 前言 Flask 上下文管理可以说是 Flask 非常具有特色的设计,它总共可分为 2 个大的方向: 应用上下文管理:通过 current_app 即可拿 ...

  9. 关于Unity 如何与Blazor Server结合

    关于Unity 如何与Blazor Server结合 一.介绍 最近工作中有`Unity`与`Blazor Server`结合的需求,在网上找了一圈,发现这方面的资料比较少,特此写下这篇记录一下自己的 ...

  10. C++的动态分派在HotSpot VM中的重要应用

    众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定.C++ 和 Java 作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持 ...