目录

1. 前言

2. Scikit-learn内置数据集

3. 数据加载示例

例1:鸢尾花数据集

例2:糖尿病数据集

例3:手写数字数据集


1. 前言

机器学习算法是以数据为粮食的,所以机器学习开发的第一步就是数据的准备。数据预处理和特征工程是机器学习中不显眼(没有像算法开发那样亮丽)但是往往是涉及工作量最大的一部分。

对机器学习算法的学习和开发人员的一个福音是互联网上有很多开源的数据集,scikit-learn也内置了一部分简单的规模较小的数据(toy datasets,玩具数据集),并且为其它规模较大的数据集准备了相应的获取(下载)的API。这些数据集已经经过了适当的预处理,可以使得机器学习算法的学习和开发人员可以回避掉数据采集和处理的“吃力不讨好”的过程而聚焦于机器学习算法本身。

此外,scikit-learn还有自动生成面向各种机器学习问题的随机数据集的工具。这些随机生成的数据集虽然不是来源于实际测量,但是由于可以很简单地生成,而且其统计特征是受控的,所以对于机器学习的学习者或者机器学习算法的早期开发验证也是非常有用。

本系列简要介绍这几种数据集的生成、加载和/或获取方式,以及相应的基于scikit-learn的处理方法。

本文作为本系列的第一篇,先介绍scikit-learn内置的一些玩具数据集。

2. Scikit-learn内置数据集

Scikit-learn中内置了一些非常经典的小规模的数据集(称为toy datasets, 玩具数据集),这些数据集可以用sklearn.dataset模块中load_xyz系列函数进行加载(其中'xyz'表示数据集的名称)。

详细参见: 7.1. Toy datasets — scikit-learn 1.0.1 documentation

以上这个表格是用以下代码在Jupyter Notebook中生成的。 这也算是对Pandas DataFrame的一种妖娆的用法了^-^.

import pandas as pddataset = pd.DataFrame()dataset['数据集名称'] = ['波士顿房价数据集','鸢尾花数据集','手写数字数据集','糖尿病数据集','葡萄酒数据集','乳腺癌数据集','体能训练数据集']
dataset['加载方法'] = ['load_boston','load_iris','load_digits','load_diabetes','load_wine','load_breast_cancer','load_linnerud']
dataset['模型类型'] = ['regression','classification','classification','regression','classification','classification','multiple regression']
dataset['数据大小(样本数*特征数)'] = ['506*13','150*4','1797*64','442*10','178*13','569*30','20*3']
dataset

3. 数据加载示例

例1:鸢尾花数据集

from sklearn.datasets import load_iris, load_digits, load_diabetes
from sklearn.datasets import get_data_home
iris = sklearn.datasets.load_iris()
print(type(iris))
#print(iris.DESCR)
print(list(iris))
print(iris['data'].shape, iris['target'].shape)
print(iris['frame'])
print(iris['feature_names'])
print(iris['filename'])
print(iris['data_module'])
<class 'sklearn.utils.Bunch'>
['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module']
(150, 4) (150,)
None
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
iris.csv
sklearn.datasets.data

如以上例子所示,sklearn通过load_xyz()加载的数据集以Bunch的格式返回,与Python中的dict很像,里面包含键值对(key-value pair)。

首先我们可以通过list()调用观察所加载的数据集有哪些键。

需要注意的是,并不是每个数据集都具有完全相同的键集。比如说iris数据集有8个键值,而波斯顿房价数据集则只有6个。但是'data','target','DESCR'大家都有,而且可能最常用的可能就是这3个。'DESCR'包含了该数据集的描述性信息。'data','target'则顾名思义分别是指数据样本及对应的标签。

例2:糖尿病数据集

考虑到可能Pandas DataFrame可能更加为人熟知,也可以把Bunch数据转换为Pandas Dataframe然后再做进一步的处理。如下所示,DataFrame的显示更养眼一些。

当然,其实每个函数都有一个参数'as_frame',如果这个参数被设置为True的话,下载时就顺便转换成Pandas DataFrame,而不需要下载后再显式地转换了。

diabetes = sklearn.datasets.load_diabetes()
#print(df.DESCR)
print(list(diabetes))
print(diabetes['data'].shape, diabetes['target'].shape)
# 转化为df
df = pd.DataFrame.from_records(data=diabetes.data, columns=data.feature_names)
df
['data', 'target', 'frame', 'DESCR', 'feature_names', 'data_filename', 'target_filename', 'data_module']
(442, 10) (442,)

例3:手写数字数据集

手写数字数据集由于其原始数据其实是二维图像,所以其中还有'images'这一项,对应了数据样本的二维表示,可以用imshow()作为图像显示出来。

from matplotlib.pyplot import imshow
df = sklearn.datasets.load_digits()
#print(df.DESCR)
print(list(df))
imshow(df['images'][10])
['data', 'target', 'frame', 'feature_names', 'target_names', 'images', 'DESCR']

如上图可以看出,‘手写数字数据集’中的数字只有8∗8的大小(比之MNIST的28∗28要小得多),所以人眼看上去很难辨认,但是机器算法能够做到!

下一篇:机器学习笔记:常用数据集之scikit-learn在线下载开源数据集

机器学习笔记:常用数据集之scikit-learn内置玩具数据集相关推荐

  1. [机器学习笔记] 常用关联规则算法

    机器学习中常用关联规则算法 关联规则算法是一种基于规则的机器学习算法,该算法可以在大数据中发现彼此之间的关系. 它的目的是:利用一些度量指标来分辨数据库中存在的强规则.也即是说关联规则挖掘是用于知识发 ...

  2. 【JSP笔记】第三章 JSP内置对象【上】

    2019独角兽企业重金招聘Python工程师标准>>> 1.内置对象简介:JSP内置对象是WEB容器创建的一组对象,不使用new关键就可以是用的对象. <% out.print ...

  3. Kotlin学习笔记(二)——函数操作符内置函数

    小白笔记(持续更新中) 匿名函数 //匿名函数 fun main() {//count()方法 Returns the length of this char sequence.val len=&qu ...

  4. 笔记十八:python的内置函数有哪些尼?都怎么是使用尼?(map()、reduce()、filter()、lambda()……)

    python的内置函数有很多,你如果和我一样是个初学者,那么学会看这个函数怎么用,需不需要传入参数等问题非常必要,首先尼函数名先打出来,然后按着ctrl键再把鼠标移到函数名位置,发现函数名会变颜色(一 ...

  5. python基础30个常用代码大全-Python3列表内置方法大全及示例代码小结

    Python中的列表是简直可说是有容乃大,虽然看似类似C中的数组,但是Python列表可以接受任意的对象元素,比如,字符串,数字,布尔值,甚至列表,字典等等,自由度提升到一个新的高度,而Python也 ...

  6. java学习笔记(六)----对象的类型转换, 匿名内置类

    对象的类型转换 --  子类对象可以自动转换成父类 --  父类转换成子类必须使用强制转换 --  instanceof操作符可以用它来判一个实例对象是否属于一个类. class A { public ...

  7. 【JSP笔记】第四章 JSP内置对象【下】

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是session 表示客户端与服务器的一次会话. Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这 ...

  8. 常用Shell脚本编写的内置变量

    2019独角兽企业重金招聘Python工程师标准>>> 参数处理-Shell传入参数的处理 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.与位置变量不同, ...

  9. 我常用的python函数(part1)--内置函数isinstance

    学习记录,仅供参考,有错必纠 语法 isinstance(object, classinfo) #object: 实例对象 #classinfo:可以是直接或间接类名.基本类型或者由它们组成的元组 实 ...

最新文章

  1. 【最强ResNet改进系列】IResNet:涨点不涨计算量,可训练网络超过3000层!
  2. Ngnix负载均衡安装及配置
  3. CVPR 2018 TRACA:《Context-aware Deep Feature Compression for High-speed Visual Tracking》论文笔记
  4. LiveVideoStackCon 2022 上海站 专题抢先看(4)
  5. 科普 | Wi-Fi 6 十问十答
  6. 移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络
  7. ORC 和 Parquet比较入门
  8. 常用计算机名词解释,计算机常用名词解释
  9. MySQL 基础操作
  10. linux下往外ping不通-出现ping: unknown host www.baidu.com
  11. java button 背景色_以编程方式删除UIButton背景颜色
  12. 怎么用计算机录制mp3的音频,内录音频是什么_如何用电脑内录音频图文步骤
  13. 职称评审要满足什么条件
  14. diy服务器个人主机_小型企业及个人用户入门级服务器DIY
  15. 电脑开机后过一会就关机自动重启
  16. GitHub 中超过3.5万开源代码被投毒
  17. OSPF协议总结5(六种LSA)
  18. NPOI编辑WORD文档
  19. xRM 扩展性及产品组合
  20. SCAU【1020】正负奇偶判断

热门文章

  1. linux sort命令 倒序,Linux 之 sort 命令
  2. TCP/IP网络编程笔记-ch8.域名及网络地址
  3. python数值积分_Python求解数值积分
  4. 高端婚礼的布置技巧 8个细节不能忽略
  5. python抢课脚本 验证码_用Python实现模拟登录正方教务系统抢课
  6. Android学习|布局—— LinearLayout
  7. 彩票复式投注程序(组合数产生方法)
  8. filter:grayscale(1) -- 使网页呈现哀悼模式
  9. 永恒之塔为什么连接服务器中断,win7系统下永恒之塔无法连接到认证服务器如何解决...
  10. select和poll的区别