机器学习,如何使用fetch_openml加载泰坦尼克数据集?
发布于 作者:苏南大叔 来源:程序如此灵动~

在sklearn
包里面,并不存在titanic.csv
数据集文件本身。但是,可以通过fetch_openml()
函数扩展到很多数据集,其中就包括titanic
数据集。并且,在openml
网站上,这个泰坦尼克数据集还存在多个版本。那么,如何区分加载openml
数据集的多个版本呢?这就是本文要讨论的问题。

大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码之间的故事。本文主要分析的对象是“泰坦尼克数据集”。测试环境:python@3.6.8
,pandas@1.1.5
,scikit-learn@1.3.2
。
泰坦尼克数据集
首先,和鸢尾花数据集一样,泰坦尼克数据集也存在着多个版本,不同的网站上提供着不同的数据源。本文聚焦于openml
网站上,提供的两个版本的泰坦尼克数据源。这就是本文的主要实验对象。值得注意的是:本文的数据源格式并不是csv
,也不是txt
,而是一种新的.arff
格式数据。所以普通的csv
数据集的加载方式,并不能解析出来数据。

泰坦尼克数据集的字段含义,可以参考文章:
本文的函数fetch_openml()
的参数及返回值,可以类比:
泰塔尼克数据集版本一,14字段
说明文档:
下载地址:
数据字段:
加载代码:
泰塔尼克数据集版本二,4字段
说明文档:
下载地址:
数据字段:
这里的第一个字段Class
是target
,那么就代表了survived
字段。
加载代码:
可能遇到的问题(参数)
执行代码:
警告信息:
解决方案,加个额外的参数parser='auto'
即可。
警告信息:
解决方案,加个额外的参数version=2
即可。
返回值又是个"bunch"类型。
返回数据分解
按照鸢尾花数据集load_irir()
的套路,这个fetch_openml()
也可以返回下面的值:
data【用于计算的特征】
输出:
target【计算得出的目标】
输出:
target_names
输出:
feature_names
输出:
frame【数据加目标】
输出:
descr
输出:
参数之as_frame,默认true
as_frame
用于控制返回值类型,不过整体依然是bunch
类型。
as_frame | data | target | target_names | feature_names | frame |
---|---|---|---|---|---|
默认/true | DataFrame | Series | list | list | DataFrame |
false | ndarray | ndarray | list | list | NoneType |
参数之return_X_y,默认false
一个return_X_y=True
,毁灭上面所有结论。这里的X
就是原来的data
,y
就是target
,X
+y
就是原来的frame
。
输出:
结语
更多机器学习的相关经验文字,欢迎参考苏南大叔的博客文章:


