如何使用sklearn加载和下载机器学习数据集

推荐阅读时间:10min~12min 文章内容:通过sklearn下载机器学习所用数据集

1简介

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。

sklearn 中提供了很多常用(或高级)的模型和算法,但是真正决定一个模型效果的最后还是取决于训练(喂养)模型时所用的数据。sklearn 中的 sklearn.datasets 模块包含了数据生成相关的功能。主要包含以下几种类型的数据集:

  • 小型玩具(样本)数据集
  • 数据生成器生成数据集
  • API 在线下载网络数据集

2玩具(样本)数据集

sklearn 内置有一些小型标准数据集,不需要从某个外部网站下载任何文件。这些API统一的格式为:sklearn.datasets.load_<name>

方法名

返回数据

用途

load_boston([return_X_y])

波士顿房价数据

回归

load_iris([return_X_y])

鸢尾花数据

分类

load_diabetes([return_X_y])

糖尿病数据集

回归

load_linnerud([return_X_y])

Linnerrud 数据集

多标签回归

load_breast_cancer([return_X_y])

乳腺癌数据集

分类

load_wine([return_X_y])

葡萄酒数据

分类

load_digits([n_class, return_X_y])

手写数字数据集

分类

2.1波士顿房价数据集

用于回归任务的数据集

  • 样本数量:506
  • 特征数量:13
  • 特征信息:
    • CRIM 城镇人均犯罪率
    • ZN 占地面积超过2.5万平方英尺的住宅用地比例
    • INDUS 城镇非零售业务地区的比例
    • CHAS 查尔斯河虚拟变量 (= 1 如果土地在河边;否则是0)
    • NOX 一氧化氮浓度(每1000万份)
    • RM 平均每居民房数
    • AGE 在1940年之前建成的所有者占用单位的比例
    • DIS 与五个波士顿就业中心的加权距离
    • RAD 辐射状公路的可达性指数
    • TAX 每10,000美元的全额物业税率
    • PTRATIO 城镇师生比例
    • B 1000(Bk - 0.63)^2 其中 Bk 是城镇的黑人比例
    • LSTAT 人口中地位较低人群的百分数
    • MEDV 以1000美元计算的自有住房的中位数
  • 缺失特征值:无

数据原地址:

http://archive.ics.uci.edu/ml/datasets/Housing

2.2鸢尾花数据集

用于分类任务的数据集

  • 样本数量:150(三个分类各有50)
  • 特征数量:4(数值型)
  • 特征信息:
    • sepal length 萼片长度(厘米)
    • sepal width 萼片宽度(厘米)
    • petal length 花瓣长度(厘米)
    • petal width 花瓣宽度(厘米)
  • 目标信息:
    • Iris-Setosa 山鸢尾
    • Iris-Versicolour 变色鸢尾
    • Iris-Virginica 维吉尼亚鸢尾
  • 缺失特征值:无

数据原地址:

http://archive.ics.uci.edu/ml/datasets/Iris

2.3糖尿病数据集

用于回归任务的数据集

  • 样本数量:442
  • 特征数量:10
  • 特征信息:
    • age 年龄
    • sex 性别
    • bmi 体重指数
    • bp 平均血压
    • s1 血清测量值1
    • s2 血清测量值2
    • s3 血清测量值3
    • s4 血清测量值4
    • s5 血清测量值5
    • s6 血清测量值6

注意:这10个特征变量都已经分别以均值为中心,并按照标准偏差乘以样本数(n_samples)进行缩放(即每列的平方和为1)

数据原地址:

http://www4.stat.ncsu.edu/~boos/var.select/diabetes.html

2.4Linnerrud 数据集

用于多标签回归任务的数据集

  • 样本数量:20
  • 特征数量:3
  • 特征信息:
    • Chins 下巴
    • Situps 仰卧起坐
    • Jumps 跳跃
  • 目标信息:
    • Weight 体重
    • Waist 腰围
    • Pulse脉搏
  • 缺失特征值:无

2.5乳腺癌数据集

用于分类任务的数据集

  • 样本数量:569
  • 特征数量:30
  • 特征信息:
    • radius 半径(从中心到边缘上点的距离的平均值)
    • texture 纹理(灰度值的标准偏差)
    • perimeter 周长
    • area 区域
    • smoothness 平滑度(半径长度的局部变化)
    • compactness 紧凑度(周长 ^ 2 /面积 - 1.0)
    • concavity 凹面(轮廓的凹部的严重性)
    • concave points 凹点(轮廓的凹部的数量)
    • symmetry 对称性
    • fractal dimension 分形维数(海岸线近似 - 1)
  • 目标信息:
    • malignant 恶性
    • benign 良性

2.6手写数字数据集

  • 样本数量:1797
  • 特征数量:64
  • 特征信息:8x8 范围在(0-16)的整型像素值图片
  • 缺失属性值:无
  • 目标信息:数字 1-10

数据原地址:

http://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits

2.7可视化手写数据集图片

import matplotlib.pyplot as plt
%matplotlib inline

from sklearn.datasets import load_digits

# 可视化手写数据集的某张图片
digits = load_digits()
print("data shape: {0}".format(digits.data.shape))
print("images shape: {0}".format(digits.images.shape))

plt.imshow(digits.images[0])
plt.axis('off') # 不显示坐标轴
plt.show()
data shape: (1797, 64)
images shape: (1797, 8, 8)

3数据生成器生成数据集

sklearn中提供了数据生成器,这些生成器可以按照一些要求生成一些随机数据。这些API统一的格式为:sklearn.datasets.make_<name>。以下是一些常用的方法。

3.1分类和聚类生成器

  • 单标签
    • make_blobs:多类单标签数据集,为每个类分配一个或多个正太分布的点集,对于中心和各簇的标准偏差提供了更好的控制,可用于演示聚类
    • make_classification:多类单标签数据集,为每个类分配一个或多个正太分布的点集,引入相关的,冗余的和未知的噪音特征;将高斯集群的每类复杂化;在特征空间上进行线性变换
    • make_gaussian_quantiles:将single Gaussian cluster (单高斯簇)分成近乎相等大小的同心超球面分离。
    • make_hastie_10_2:产生类似的二进制、10维问题。
    • make_moons/make_moons:生成二维分类数据集时可以帮助确定算法(如质心聚类或线性分类),包括可以选择性加入高斯噪声。它们有利于可视化。用球面决策边界对高斯数据生成二值分类。
  • 多标签
    • make_multilabel_classification:生成多个标签的随机样本。
  • 二分聚类
    • make_biclusters:Generate an array with constant block diagonal structure for biclustering。
    • make_checkerboard:Generate an array with block checkerboard structure for biclustering。

3.2回归生成器

  • make_regression:产生的回归目标作为一个可选择的稀疏线性组合的具有噪声的随机的特征。它的信息特征可能是不相关的或低秩(少数特征占大多数的方差)。
  • make_sparse_uncorrelated: 产生目标为一个有四个固定系数的线性组合。
  • make_friedman1: 与多项式和正弦相关变换相联系。
  • make_friedman2: 包括特征相乘与交互。
  • make_friedman3: 类似与对目标的反正切变换。

3.3可视化单标签分类数据

import matplotlib.pyplot as plt
%matplotlib inline

from sklearn.datasets import make_classification
from sklearn.datasets import make_blobs
from sklearn.datasets import make_gaussian_quantiles

plt.figure(figsize=(8, 8))

# 控制图像外侧边缘以及图像间的空白区域
plt.subplots_adjust(bottom=.05, top=.95, left=.05, right=.95)

plt.subplot(321)
plt.title("One informative feature, one cluster per class", fontsize=11)
X1, Y1 = make_classification(n_features=2, n_redundant=0, n_informative=1,
                             n_clusters_per_class=1)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1,
            s=25, edgecolor='k')

plt.subplot(322)
plt.title("Two informative features, one cluster per class", fontsize=11)
X1, Y1 = make_classification(n_features=2, n_redundant=0, n_informative=2,
                             n_clusters_per_class=1)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1,
            s=25, edgecolor='k')

plt.subplot(323)
plt.title("Two informative features, two clusters per class", fontsize=11)
X2, Y2 = make_classification(n_features=2, n_redundant=0, n_informative=2)
plt.scatter(X2[:, 0], X2[:, 1], marker='o', c=Y2,
            s=25, edgecolor='k')

plt.subplot(324)
plt.title("Multi-class, two informative features, one cluster", fontsize=11)
X1, Y1 = make_classification(n_features=2, n_redundant=0, n_informative=2,
                             n_clusters_per_class=1, n_classes=3)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1,
            s=25, edgecolor='k')

plt.subplot(325)
plt.title("Three blobs", fontsize=11)
X1, Y1 = make_blobs(n_features=2, centers=3)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1,
            s=25, edgecolor='k')

plt.subplot(326)
plt.title("Gaussian divided into three quantiles", fontsize=11)
X1, Y1 = make_gaussian_quantiles(n_features=2, n_classes=3)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1,
            s=25, edgecolor='k')

plt.show()

4API 在线下载网络数据集

sklearn中提供了数据生成器,这些生成器可以按照一些要求生成一些随机数据。这些API统一的格式为:sklearn.datasets.fetch_。以下是一些常用的数据集:

4.120个新闻组文本数据集

20个新闻组文本数据集包含有关20个主题的大约18000个新闻组,被分为两个子集:一个用于训练(或者开发),另一个用于测试(或者用于性能评估)。训练和测试集的划分是基于某个特定日期前后发布的消息。结果中包含20个类别。

这个数据集可以通过两个方法来获取下载:fetch_20newsgroupsfetch_20newsgroups_vectorizedfetch_20newsgroups 返回一个能够被文本特征提取器接受的原始文本列表,fetch_20newsgroups_vectorized 返回将文本使用tfidf处理后的特征矩阵。

数据原地址:

http://qwone.com/~jason/20Newsgroups

4.2森林覆盖类型数据集

森林覆盖数据集对应美国的 30×30m 的 patches of forest(森林区域),收集这些数据用于预测每个 patch 的植被 cover type (覆盖类型),即优势树种。 总共有七个植被类型,使得这是一个多分类问题。 每个样本有 54 个特征,有些特征是布尔指标,其他的是离散或者连续的量。

这个数据集可以通过fetch_covtype来获取下载。

数据原地址:

http://archive.ics.uci.edu/ml/datasets/Covertype

4.3路透社语料库第一卷数据集

路透社语料库第一卷( RCV1)是路透社为了研究目的提供的一个拥有超过 800,000 份手动分类的新闻报导的文档库。该数据集在 [1] 中有详细描述。该数据集的特征矩阵是一个 scipy CSR 稀疏矩阵,有 804414 个样品和 47236 个特征。 非零值包含 cosine-normalized(余弦归一化),log TF-IDF vectors。

这个数据集可以通过fetch_rcv1来获取下载。

数据原地址:

http://jmlr.csail.mit.edu/papers/volume5/lewis04a/

4.4带标签的人脸识别数据集

这个数据集是一个在互联网上收集的名人 JPEG 图片集,每张图片的居中部分都是一张脸。这个数据集可以做两个任务,一个是人脸验证,给定两幅图片,二元分类器必须能够预测这两幅图片是否是同一个人。另一项任务人脸识别或面部识别,给定一个未知的面孔,通过参考一系列已经学习经过鉴定的人的照片来识别此人的名字。人脸验证和人脸识别都是基于经过训练用于人脸检测的模型的输出所进行的任务。

这个数据集可以通过两个方法来下载:fetch_lfw_pairsfetch_lfw_peoplefetch_lfw_people用于加载人脸验证任务数据集(每个样本是属于或不属于同一个人的两张图片)。 fetch_lfw_people 用于加载人脸识别任务数据集(一个多类分类任务(属于监督学习),

数据原地址:

http://vis-www.cs.umass.edu/lfw/

4.5下载 mldata.org 数据

mldata.org(http://mldata.org/ ) 是一个公开的机器学习数据仓库。mldata.org 中的数据大多都是以 (n_features, n_samples) 这样的组织形式存在。 这与 scikit-learn 中的习惯约定是不一致的,所以 sklearn.datasets.fetch_mldata 默认情况下通过 transpose_data 关键字控制对这个矩阵进行转置运算。

这些数据集都可以通过fetch_mldata方法来下载,例如下载 MNIST 手写数据集:fetch_mldata('MNIST original')

作者:无邪,个人博客:脑洞大开,专注于机器学习研究。

原文发布于微信公众号 - 脑洞科技栈(naodong-open)

原文发表时间:2018-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

如何捕获一只彩色卓别林?黑白照片AI上色教程很友好 | 哈佛大触

1722
来自专栏用户2442861的专栏

卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning

欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。  技术交流QQ群:433250724,欢迎对算法、技术感兴趣的同...

1861
来自专栏机器学习之旅

理论:T级数据量下的划分聚类方法CLARANS+

定义是这样的,把一个数据对象,划分成子集的过程,使得子集内相似度大,子集外相似度小。这样的一个过程叫做聚类。

923
来自专栏专知

【专知-Java Deeplearning4j深度学习教程05】无监督特征提取神器—AutoEncoder:图文+代码

【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视...

49511
来自专栏AI科技大本营的专栏

一文教会你三维网格物体识别

本文由「图普科技」(微信公众号 tuputech)编译,原作者 Vladimir Tsyshnatiy,链接:https://medium.com/@vtsys...

1303
来自专栏ATYUN订阅号

只使用Numpy手动实现多层卷积神经网络(详解)

AiTechYun 编辑:yuxiangyu 在过去,我曾写过一篇关于“理解在最大池化层和转置卷积的反向传播”的文章。现在我想要使用这些知识做一个多层(或者说多...

3558
来自专栏python开发者

神经网络反向传播梯度计算数学原理

[神经网络]反向传播梯度计算数学原理 1 文章概述 本文通过一段来自于Pytorch官方的warm-up的例子:使用numpy来实现一个简单的神经网络。使用基本...

37513
来自专栏机器学习之旅

python开发:基于SSD下的图像内容识别(一)1.首先,先看一下我们能达到什么样的效果:2.我们需要做哪些基本的步骤:

鸽了将近有一个月的时间没有更新东西,真的不是因为我懒,主要在忙一些工作上的事情,然后就是被安装caffe环境折磨的死去活来。我本来用的上mba来搭caffe环境...

1213
来自专栏ATYUN订阅号

解决多标签分类问题(包括案例研究)

由于某些原因,回归和分类问题总会引起机器学习领域的大部分关注。多标签分类在数据科学中是一个比较令人头疼的问题。在这篇文章中,我将给你一个直观的解释,说明什么是多...

6596
来自专栏AI科技评论

干货 | 三维网格物体识别的一种巧妙方法

AI 科技评论按:本文由「图普科技」编译自 Medium - 3D body recognition using VGG16 like network

1021

扫码关注云+社区