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使用的内容。

目前有两种数据集:

  1. 标准:包含功能和目标的单个数据表。
  2. 语料库:用于自然语言处理的文本语料库。
  3. < > >

    这两种数据集都有它们自己的特定包结构,如以下各节所定义的。请注意,ybdata validate命令可用于检查数据集是否已准备好上载。

    标准数据集

    标准数据集由单个数据表组成,该数据表可以加载到数据帧或numpy数组中,以便使用scikit learn进行机器学习。除了dataset basics中提到的文件外,组成标准dataset包的数据和元数据文件如下(其中"name"是唯一的dataset名称):

    • fixtures/name/name.csv.gz:带有标题行的gzip压缩csv文件将被加载到pd.read_CSV(没有索引列)。
    • fixtures/name/name.npz:用np.load加载的xy的压缩numpy矩阵表示
    • fixtures/name/meta.json:标识csv文件中数据的功能和目标列名的元数据文件。

    考虑下面的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和与功能列表相对应的列,并且ytarget键中描述的列中的一个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示例和测试中使用。接下来是更详细的步骤,但简而言之,这里是打包数据集所需操作的草图:

    1. fixtures/
    2. 中创建数据集
    3. 使用ybdata convert将数据集转换为所有适当的类型
    4. 使用ybdata validate验证数据集是否就绪
    5. 使用ybdata包打包数据集
    6. 使用ybdata upload上载数据集
    7. 使用uploads/manifest.json更新yellowbrick.datasets
    8. < > >

      此存储库中的大多数数据集来自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下载将失败!

      欢迎加入QQ群-->: 979659372 Python中文网_新手群

      推荐PyPI第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值