对于机器学习研究人员来说,搭建模型之前的第一步永远是进行探索性数据分析。
通过查看scikit-learn的官方文档以及相关教程,总结了下面的数据读取基础知识点:
- 官方提供了哪些数据集;
- 如何加载数据集;
- 每条数据是如何存储的;
实验的环境是jupyter notbook,一款轻量级python编辑器,运行在浏览器上。sklearn的版本为0.19.1,python的版本为3.6。
1、官方提供了哪些数据集
根据官网【1】显示,sklearn提供的数据集分为Toy和Real World两种,其中Toy指代轻量级的数据集,适用于学习和理解算法;Real World数据集包含的数据较多,适用于真实环境下调参等工作。Toy数据集和Real World数据集的读取方式有些区别,Toy数据集采用load_xxx()的形式,而Real World数据集采用fetch_xxx()的形式。下面是Toy数据集:
下面是Real World数据集:
2、如何加载数据集
首先介绍一下数据量较小的iris数据集【2】,iris表示鸢尾花,是众多分类算法的通用入门数据集。iris包含花萼长度、花萼宽度、花瓣长度、花瓣宽度共4个特征,用于预测某朵花的是Setosa、Versicolour、Virginica中的哪一类。
(1)获取数据集对象
以iris数据集为例,可以采用下面方式获取数据集对象:
from
(2)查看数据集对象的属性
经过查看文档,发现iris对象包含下面的属性:
print
上述的五种数据集属性基本上涵盖了所需了解的一切信息,含义如下:
- DESCR:即describe,给出数据集的完整描述
- data:所有数据
- feature_names:特征的名字
- target:所有数据的标签
- target_names:每个标签的名字
下面的代码输出了特证名字和标签名字:
print
此外,数据集的数据个数和标签情况同样非常重要,进行查看如下:
print
通过对列表进行统计,发现数据集共含有150条数据,以及对应的150个标签。每类数据均含有50个,表明这是一个数据均衡的数据集,每类数据占比为33.33%。
3、每条数据是如何存储的
由于各种数据的维度并不相同,有些数据是一维的(如特征值数据集iris),也有些数据本身是二维的(如数字数据集digits),所以必须知道datasets的存储方式。
按照资料显示,所有数据均是以2d的数组形式存储的,格式为(num_ samples, num_ features)。那么,对于digits数据集来说,应该以何种方式重组num_features个特征,以获取数字信息呢?经过查看发现digits对象包含下面的属性:
digits
所以,可采用digits的images属性获得原始图像形式的特征值(即灰度值):
print
使用matplotlib可视化上述的灰度值,得到下面的图像:
显然,这是数字零。可采用digits的target属性查看第一张图像的标签,印证上图表示数字零:
print
参考:
【1】https://scikit-learn.org/stable/tutorial/basic/tutorial.html#machine-learning-the-problem-setting
【2】https://baike.baidu.com/item/IRIS/4061453?fr=aladdin