让你的模型看起来更美观。
项目描述
makeup 依赖框架
从构思到生产,可重复地运行机器学习/人工智能模型。
makeup
力求帮助数据科学家编写模型代码,而不必承担太多其他责任。 makeup
是连接构建模型不同阶段的连接组织。
这不仅仅是一个处理器库,而是一个代码组织框架,旨在使你的开发更简单。
在此库中可以开发额外的功能,以提供服务,例如托管模型的Web API。
为什么?
- 编写更少的代码。
- 推广可互操作的“模型接口”。
- 针对缓存以提高可重复性和便捷性。
- 简化调试,无需修改代码。
- 易于测试的生产代码。
- 工件渲染,有助于部署。
如何?
我们将尝试将我们的ML代码分解成更小的功能部分。这些部分将是简单的Python函数,我们将把它们称为目标。我们应该将这些目标做得有多大?一个很好的经验法则是,在你想 print
、保存或检查变量或结果的地方创建一个新的目标。
一些示例目标可能包括:load
、prep
(或特征生成feature
)、split
、train
入门指南
以一个机器学习项目为例,例如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 基本类型的元组,你可以避免将你的代码与数据对象耦合。通过在函数的参数中明确声明你的数据要求,这将使得插入不同的数据源和单独测试方法变得更加容易。
在数据上训练
现在你有了数据,你将想要使用它来训练你的模型。而不是按照程序的方式继续我们的代码,让我们创建另一个方法,它接受上一个函数返回的值。让我们明智地命名这些返回的值:data
和 target
。
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)
这是使用一个通用的行,就像我们的例子一样,但更明确地指定你的参数可能更适合你。
运行代码...
我们定义了三个方法:load
、train
和 predict
。这些函数之间存在隐含的依赖关系,我们可以编写一些代码来执行这些操作,但这就是 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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6b92d5a406ac3d609021e6c07d1ece7db45d0ed71592dd52848df927c833a540 |
|
MD5 | 46185ca14b0046626f2f17a774d273f7 |
|
BLAKE2b-256 | ad325d3dda50c2be98a5b82aad5715dccb165d5d479c6b44f74c63b03d065abc |