YellowBrick数据集管理和部署脚本。
yellowbrick-datasets的Python项目详细描述
黄砖数据集
Yellowbrick数据集管理和部署脚本。
YellowBrick数据集托管在云中的S3驱动器中,以便轻松访问数据(例如)。这个存储库管理这些数据集、它们的数据结构以及与云的交互。
开始
ybdata
脚本作为入口点安装在setup.py
中。您可以使用pip install yellowbrick data安装包和脚本。如果您已经从github下载了源代码,那么可以使用带有pip的可编辑模式安装应用程序。在项目的当前工作目录中,使用:
$ pip install -e .
此时,您的$path
上应该有一个ybdata
命令。与git一样,该实用程序有许多子命令用于各种与数据相关的管理任务。要查看命令及其说明的列表:
$ ybdata --help
数据集基础知识
所有数据集必须具有以下属性:
- 向用户标识数据集的唯一名称(例如"bikeshare")
- 描述数据来源和内容的readme.md
- 可以由YellowBrick库读取的一个或多个数据文件
- 引用数据源的可选引文.bib文件
数据集存储在子目录中的fixtures/
目录中,与数据集同名。此子目录包含构成数据包结构的数据和元数据文件。uploads/
目录包含在fixtures/
目录中找到的压缩数据集的最新版本,是上载到S3以供YellowBrick使用的内容。
目前有两种数据集:
- 标准:包含功能和目标的单个数据表。
- 语料库:用于自然语言处理的文本语料库。 < > >
fixtures/name/name.csv.gz
:带有标题行的gzip压缩csv文件将被加载到pd.read_CSV
(没有索引列)。fixtures/name/name.npz
:用np.load
加载的x
和y
的压缩numpy矩阵表示fixtures/name/meta.json
:标识csv文件中数据的功能和目标列名的元数据文件。- 在
fixtures/
中创建数据集
- 使用ybdata convert将数据集转换为所有适当的类型
- 使用ybdata validate验证数据集是否就绪
- 使用ybdata包打包数据集
- 使用ybdata upload上载数据集
- 使用
uploads/manifest.json更新
yellowbrick.datasets
< > >
这两种数据集都有它们自己的特定包结构,如以下各节所定义的。请注意,ybdata validate
命令可用于检查数据集是否已准备好上载。
标准数据集
标准数据集由单个数据表组成,该数据表可以加载到数据帧或numpy数组中,以便使用scikit learn进行机器学习。除了dataset basics中提到的文件外,组成标准dataset包的数据和元数据文件如下(其中"name"是唯一的dataset名称):
考虑下面的csv文件示例:
datetime,temperature,relative humidity,light,CO2,humidity,occupancy 2015-02-04 17:51:00,23.18,27.272,426,721.25,0.00479298817650529,1 2015-02-04 17:51:59,23.15,27.2675,429.5,714,0.00478344094931065,1 2015-02-04 17:53:00,23.15,27.245,426,713.5,0.00477946352442199,1 2015-02-04 17:54:00,23.15,27.2,426,708.25,0.00477150882608175,1 2015-02-04 17:55:00,23.1,27.2,426,704.5,0.00475699293331518,1 2015-02-04 17:55:59,23.1,27.2,419,701,0.00475699293331518,1 2015-02-04 17:57:00,23.1,27.2,419,701.666666666667,0.00475699293331518,1 2015-02-04 17:57:59,23.1,27.2,419,699,0.00475699293331518,1 2015-02-04 17:58:59,23.1,27.2,419,689.333333333333,0.00475699293331518,1
这个文件的一个例子是:
{"features":["temperature","relative humidity","light","CO2","humidity",],"target":"occupancy","labels":{"occupied":1,"not occupied":0}}
这将确保数据集x
是一个pd.dataframe
和与功能列表相对应的列,并且y
是target
键中描述的列中的一个pd.series
。标签
键用于转换分类目标的数字编码分类变量。
语料库数据集
语料库数据集包含存储在数据集目录的子目录中的纯文本文件,这些子目录对应于纯文本文件所属的类或类别。请注意,这些文本文件应该只有一级深度,并且每个文档都应该存储在自己的文件中。
此时,单个的语料库文件应该被解压(整个目录被压缩)。文本语料库是read类似于以下内容:
importosimportglobpaths=os.path.join(data_dir,"*","*.txt")documents=glob.glob(paths)labels=[os.path.basename(os.path.dirname(path))forpathindocuments]
然后,文档和标签可以直接传递给scikit learn text feature extraction transformers进行分析。
创建和上载数据集
本节概述如何创建和上载数据集,以便在YellowBrick示例和测试中使用。接下来是更详细的步骤,但简而言之,这里是打包数据集所需操作的草图:
此存储库中的大多数数据集来自uci机器学习存储库。创建存储库的基本方法是使用uciml存储库的唯一名称作为要存储在fixtures/
中的数据集的唯一名称。对数据进行包装,使其作为一个pandas可读的csv文件存在,并带有一个标题行(通常通过将目标与功能连接或从tsv中提取数据等方式)。确保csv在完成时是gzip压缩的!
创建pandas csv文件后,手动创建readme.md、meta.json和citation.bib文件。从uciml页面描述中复制和粘贴readme.md通常也相当简单(必要时对其进行包装,以尽可能多地包含细节)。bib文件可以通过google scholar搜索并选择"cite as bibtex"找到。通常必须手动编写meta.json。完成后,您可以使用ybdata convert将csv转换为.npz
对象,如下所示:
$ ybdata convert fixtures/mydata/mydata.csv.gz fixtures/mydata/mydata.npz
请注意,您可以从.npz到csv.gz,但在争吵时通常更容易朝相反的方向走。
完成后,使用:
$ ybdata validate fixtures/mydata
这将打印出一个包含验证所需项和可选项的表,并且验证状态应列在底部。验证后,将数据集转换为包:
$ ybdata convert fixtures/mydata
默认情况下,这将在uploads/mydata.zip
中创建一个包,并用包和签名信息更新uploads/manifest.json
。注意:如果要更新以前创建的数据集,可以使用-f
标志覆盖旧数据并创建新包。
最后将数据集上传到云中的s3存储中。您需要正确的aws访问密钥才能执行此操作(请参阅环境或aws配置选项)。如果要将数据集上载到其他位置,请使用--bucket
标志。
$ ybdata upload --pending v1.0
上载过程还使用最终下载url和可以添加到yellowbrick库的格式更新uploads/manifold.json
。确保YellowBrick库更新为正确的YellowBrick版本,否则YB下载将失败!