【scikit-learn基础】--『数据加载』之真实数据集
上一篇介绍了scikit-learn中的几个玩具数据集,本篇介绍scikit-learn提供的一些真实的数据集。
玩具数据集:scikit-learn 基础(01)--『数据加载』之玩具数据集
1. 获取数据集
与玩具数据集不同,真实的数据集的数据不仅数据特征多,而且数据量也比较大,
所以没有直接包含在scikit-learn库中。
虽然scikit-learn中提供了在线加载数据的函数,不过由于网络方面的原因,在线加载几乎不可能成功。
我离线下载了所有scikit-learn的真实数据,并且转换成了缓存文件,经测试可正常离线使用。
已经转换好的离线数据集:
- olivetti:https://url11.ctfile.com/f/45455611-930509718-42d985?p=6872
- 20newsgroups:https://url11.ctfile.com/f/45455611-930509625-f32241?p=6872
- lfw_home:https://url11.ctfile.com/f/45455611-930509715-c10239?p=6872
- covertype:https://url11.ctfile.com/f/45455611-930509631-f5e629?p=6872
- RCV1:https://url11.ctfile.com/f/45455611-930509760-30d2a2?p=6872
- kddcup99-py3:https://url11.ctfile.com/f/45455611-930509652-4f47ea?p=6872
- kddcup99_10-py3:https://url11.ctfile.com/f/45455611-930509637-2f0131?p=6872
- 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_20newsgroups和fetch_20newsgroups_vectorized。
这两个函数的主要区别在于:
fetch_20newsgroups返回的是一个原始的文本列表,每个新闻组的数据都以字符串形式给出fetch_20newsgroups_vectorized返回的是一个可以直接用于机器学习或评估的向量数据集,它已经为文本数据进行了特征提取,返回的是一个稀疏矩阵
2.3. 人脸数据集
这个数据集是一个包含13233 张人脸图像的数据集,用于测试人脸识别算法。
这些图像均来自互联网,包含不同的人脸角度、表情和光照条件。
每张图像都给出了对应的人名,共有5749 个个体,其中大部分人只有一张图像,部分人有多张图像。
此数据集的目标是测试人脸识别算法的准确率,通常用于评估算法的准确性、召回率和交叉验证等。
由于数据集包含大量的人脸图像和个体,因此也适用于训练和测试深度学习模型。
此数据集的加载函数:fetch_lfw_people和fetch_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 个变量的值:
- MedianHouseValue(中位数房价):以 1000 美元为单位。
- MedianIncome(中位数收入):以年为单位,以美元为单位。
- HouseAge(房龄):以年为单位。
- Rooms(房间数):整数。
- Bedrooms(卧室数):整数。
- Population(人口):以 1000 人为单位。
- HousingUnits(房屋数量):以千为单位。
- SquareMiles(平方英里):以平方英里为单位。
该数据集被广泛用于房价预测相关的机器学习算法的学习中。
此数据集的加载函数:fetch_california_housing
3. 总结
当机器学习的算法掌握到一定程度的时候,一定会想尝试用真实的数据集来训练模型。
这些经典的真实数据集不仅数据量丰富,而且涵盖的范围广,用来练手和提高自己的能力再好不过。
【scikit-learn基础】--『数据加载』之真实数据集的更多相关文章
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 ...
- odoo基础数据加载
odoo 基础数据加载 这里介绍的odoo基础数据加载分两种方式,一种是演示数据加载,一种是默认数据加载,下面就是详细介绍 首先,当然是创建一个date文件夹 项目目录,右键自定义一个文件夹 XML数 ...
- transformers 之Trainer对应的数据加载
基础信息说明 本文以Seq2SeqTrainer作为实例,来讨论其模型训练时的数据加载方式 预训练模型:opus-mt-en-zh 数据集:本地数据集 任务:en-zh 机器翻译 数据加载 Train ...
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...
- python多种格式数据加载、处理与存储
多种格式数据加载.处理与存储 实际的场景中,我们会在不同的地方遇到各种不同的数据格式(比如大家熟悉的csv与txt,比如网页HTML格式,比如XML格式),我们来一起看看python如何和这些格式的数 ...
- flask+sqlite3+echarts3+ajax 异步数据加载
结构: /www | |-- /static |....|-- jquery-3.1.1.js |....|-- echarts.js(echarts3是单文件!!) | |-- /templates ...
- Entity Framework关联查询以及数据加载(延迟加载,预加载)
数据加载分为延迟加载和预加载 EF的关联实体加载有三种方式:Lazy Loading,Eager Loading,Explicit Loading,其中Lazy Loading和Explicit Lo ...
- JQuery插件:遮罩+数据加载中。。。(特点:遮你想遮,罩你想罩)
在很多项目中都会涉及到数据加载.数据加载有时可能会是2-3秒,为了给一个友好的提示,一般都会给一个[数据加载中...]的提示.今天就做了一个这样的提示框. 先去jQuery官网看看怎么写jQuery插 ...
- 如何评估ETL的数据加载时间
简述如何评估大型ETL数据加载时间. 答:评估一个大型的ETL的数据加载时间是一件很复杂的事情.数据加载分为两类,一类是初次加载,另一类是增量加载. 在数据仓库正式投入使用时,需要进行一次初次加载,而 ...
- 浅谈Entity Framework中的数据加载方式
如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Arc ...
随机推荐
- 【路由器】OpenWrt 简介和安装
目录 简介 来源 介绍 安装 一般安装流程 固件搜索下载 参考资料 简介 来源 2002 年底 Linksys 公司推出 WRT-54G,采用了 Linux 取代了原来的 vXworks 系统.迫于 ...
- Mybatis插件功能
1 插件的作用 在Mybatis执行SQL的生命周期中,会使用插件进行埋点,主要包括Executor.StatementHandler.ParameterHandler和ResultSetHandle ...
- [apue] 进程环境那些事儿
main 函数与进程终止 众所周知,main 函数为 unix like 系统上可执行文件的"入口",然而这个入口并不是指链接器设置的程序起始地址,后者通常是一个启动例程,它从内核 ...
- 想了解API接口,这一篇就够了
API(Application Programming Interface)接口,对于大多数人来说可能还比较陌生,但实际上我们每天都在与它打交道.无论是使用手机上的应用程序,还是在网上购物,都少不了A ...
- git clone时报错:Permission denied
一.问题简述: 执行git clone git@github.com:T-Better/Soft_test.git时报错:\302\226git@github.com: Permission deni ...
- C# API复制/拷贝到剪辑板
备忘 昨天在做一个程序的时候需要用到"剪辑板"功能, 可是死活引用不了"windows.forms"- (忘记添加引用了) 无奈只好去找了一个易语言的" ...
- 文心一言 VS 讯飞星火 VS chatgpt (89)-- 算法导论8.3 2题
二.用go语言,下面的排序算法中哪些是稳定的:插入排序.归并排序.堆排序和快速排序?给出一个能使任何排序算法都稳定的方法.你所给出的方法带来的额外时间和空间开销是多少? 文心一言: 在Go语言中,以下 ...
- 拉普拉斯金字塔在多图HDR算法中的应用以及多曝光图像的融合算法简介。
在SSE图像算法优化系列二十九:基础的拉普拉斯金字塔融合用于改善图像增强中易出现的过增强问题(一) 一文中我们曾经描述过基于几种高频融合法则的拉普拉斯金字塔融合算法,那里是主要针对2副图像的.实际的应 ...
- SpringBoot + Redis + Token 解决接口幂等性问题
前言 SpringBoot实现接口幂等性的方案有很多,其中最常用的一种就是 token + redis 方式来实现. 下面我就通过一个案例代码,帮大家理解这种实现逻辑. 原理 前端获取服务端getTo ...
- Mybatiplus通用3.5.1版本及其以上的代码生成器工具类
Mybatiplus通用3.5.1版本及其以上的代码生成器工具类 package com.gton.util; import com.baomidou.mybatisplus.annotation.F ...