跳转到主要内容

让你的模型看起来更美观。

项目描述

makeup 依赖框架

从构思到生产,可重复地运行机器学习/人工智能模型。

makeup 力求帮助数据科学家编写模型代码,而不必承担太多其他责任。 makeup 是连接构建模型不同阶段的连接组织。

这不仅仅是一个处理器库,而是一个代码组织框架,旨在使你的开发更简单。

在此库中可以开发额外的功能,以提供服务,例如托管模型的Web API。

为什么?

  • 编写更少的代码。
  • 推广可互操作的“模型接口”。
  • 针对缓存以提高可重复性和便捷性。
  • 简化调试,无需修改代码。
  • 易于测试的生产代码。
  • 工件渲染,有助于部署。

如何?

我们将尝试将我们的ML代码分解成更小的功能部分。这些部分将是简单的Python函数,我们将把它们称为目标。我们应该将这些目标做得有多大?一个很好的经验法则是,在你想 print、保存或检查变量或结果的地方创建一个新的目标。

一些示例目标可能包括:loadprep(或特征生成feature)、splittrain

入门指南

以一个机器学习项目为例,例如Scikit-learn 爱ris 示例。让我们首先创建一个名为 iris 的模块来命名我们的模型。以下代码将被添加到 iris/__init__.py 中。

加载数据

无论你做什么,你都需要先加载数据。我很难找到一个例子,其中程序应该将数据源硬编码在代码中,但这种情况似乎在每个 Jupyter Notebook 中都发生了,所以让我们写一个方法来做这件事。这将是我们的默认数据,但你可以在运行时更改数据源/集。

为了实现这一点,我们将使用 dataset.load_iris 函数。请注意,这段代码可以同样容易地加载 CSV、调用数据库或加载任何其他数据源。关于这一点稍后详述。

# iris/__init__.py
from sklearn import datasets

def load():
    """Returns reasonable "default data" for executon. Use in Juypter Notebooks.""" 
    iris = datasets.load_iris()
    return iris.data[:, :2], iris.target

# load = "data/yourdataset.tsv"

Iris 示例正在加载一个对象并从中提取两个有用的组件
一个数据框和目标数字。

请注意,加载的 iris 变量没有返回,尽管它可以返回。通过返回一个通用的 Python 基本类型的元组,你可以避免将你的代码与数据对象耦合。通过在函数的参数中明确声明你的数据要求,这将使得插入不同的数据源和单独测试方法变得更加容易。

在数据上训练

现在你有了数据,你将想要使用它来训练你的模型。而不是按照程序的方式继续我们的代码,让我们创建另一个方法,它接受上一个函数返回的值。让我们明智地命名这些返回的值:datatarget

def train(data, target):
    """
    Further describing the inputs here will help later.
    data: a DataFrame with x, y, z column requirements.
    target: a list of numbers
    """
    clf = SVC()
    clf.fit(data, target)

    return clf

预测

你现在有了 SVC 模型。在这里,我们完成预测。

def predict(clf, row):
    return clf.predict(row)

这是使用一个通用的行,就像我们的例子一样,但更明确地指定你的参数可能更适合你。

运行代码...

我们定义了三个方法:loadtrainpredict。这些函数之间存在隐含的依赖关系,我们可以编写一些代码来执行这些操作,但这就是 makeup 的作用所在。

在笔记本中

import iris
from makeup import run, target

target(iris.train, requires=iris.load)
run(iris, 'train')

在命令行中,可以使用以下命令执行

python -m makeup iris train

你还可以通过 URL 覆盖 数据源。

python -m makeup iris train --load file://./data.csv

你可以想象依赖关系变得更加复杂

from makeup import target
import examples.iris as iris

target(iris.features, requires=iris.load)
target(plot, requires=iris.features)

target(iris.split, requires=iris.features)
target(iris.train, requires=iris.split)
load -> features |-> plot
                 \-> split -> train

或者,以简化的形式

from makeup import workflow
import examples.iris as iris

workflow({
    iris.features: iris.load,
    plot: iris.features,
    iris.split: iris.features,
    iris.train: iris.split,
})

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分发

makeup-0.1.3.tar.gz (12.6 kB 查看哈希

上传时间

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面