Project Icon

lineapy

两行代码将混乱笔记本转化为数据管道的开源工具

LineaPy是一个开源Python工具,用于捕获、分析和转换数据科学工作流程。通过跟踪代码执行序列,LineaPy能够理解代码及其上下文,提供一套工具来清理混乱的笔记本、追溯以往工作和构建数据管道。只需两行代码,就可将复杂的工作流程转化为整洁的数据管道,帮助数据科学家更高效地将工作投入生产。

LineaPy

只需两行代码,
即可捕获、分析并将杂乱的笔记本转化为数据管道。

在Twitter上关注LineaPy! 加入LineaPy Slack!

在我们的Slack上提问或了解我们的研讨会!

👇 立即尝试! 👇

https://user-images.githubusercontent.com/13392380/169427654-487d8d4b-3eda-462a-a96c-51c151f39ab9.mp4

Python版本 构建 Netlify状态 许可证 PyPi

LineaPy可以解决哪些问题?

用例1:清理杂乱的笔记本

在Jupyter笔记本中日复一日地工作时,很容易写出杂乱的代码 — 你可能会不按顺序执行单元格,重复执行同一个单元格,编辑或删除单元格,直到获得满意的结果,特别是在生成表格、模型和图表时。然而,这种高度动态和交互式的笔记本使用可能会引入一些问题。我们的同事可能无法通过重新运行我们的笔记本来重现我们的结果,更糟糕的是,我们自己可能会忘记产生之前结果所需的步骤。

避免这个问题的一种方法是在开发过程中不断重新执行整个笔记本,保持笔记本的顺序性。然而,这种方法会打断我们自然的工作流程和思路,降低我们的生产力。因此,更常见的做法是在开发后清理笔记本。这是一个耗时的过程,而且不能免于由删除的单元格和不按顺序执行单元格造成的可重现性问题。

要了解LineaPy如何帮助处理杂乱的笔记本,请查看此处的演示或在Colab中打开

用例2:回顾之前的工作

数据科学通常是一项团队努力,一个人的工作依赖于其他人的结果。例如,构建模型的数据科学家可能会使用其他同事设计的特征。在使用其他人生成的结果时,我们可能会遇到数据质量问题,包括缺失值、可疑数字和难以理解的变量名。当我们遇到这些问题时,我们可能需要检查这些结果是如何产生的。通常,这意味着要追溯用于生成相关结果的代码。在实践中,这可能是一项具有挑战性的任务,因为我们可能不知道是谁产生了这个结果。即使我们知道该问询谁,那个人可能也不记得确切版本的代码存储在哪里,更糟糕的是,可能在没有版本控制的情况下覆盖了代码。此外,该人可能已经离开了组织,没有移交相关知识。在这些情况下,识别任何问题的根源变得极其困难,使得结果不可靠甚至无法使用。

要了解LineaPy如何在这里提供帮助,请查看此处的演示或在Colab中打开

用例3:构建管道

随着我们的笔记本变得更加成熟,我们可能会像使用管道一样使用它们。例如,我们的笔记本可能会处理最新的数据以更新仪表板,或者预处理数据并将其转储到文件系统中以供下游模型开发使用。为了保持结果的最新状态,我们可能需要定期重新执行这些过程。手动运行笔记本是一个容易出错的脆弱过程,因此我们可能希望为生产环境设置适当的管道。如果没有相关的工程支持,我们需要清理和重构我们的笔记本代码,以便在编排系统或作业调度器中使用,如cron、Apache Airflow、Argo、Kubeflow、DVC或Ray。当然,这假设我们已经知道这些工具是如何工作的以及如何使用它们 — 如果不知道,我们需要先花时间学习它们!所有这些操作工作都非常耗时,会分散我们作为数据科学家的核心职责。

要了解LineaPy如何在这里提供帮助,请查看此处的演示或在Colab中打开

入门

LineaPy是一个用于捕获、分析和自动化数据科学工作流程的Python包。 从高层次来看,LineaPy跟踪代码执行的顺序,以全面理解代码及其上下文。 这种理解使LineaPy能够提供一套工具,帮助数据科学家更快、更轻松地将工作投入生产,仅需两行代码。

查看本节了解LineaPy可以帮助解决的问题类型。

先决条件

LineaPy运行在Python>=3.7,<3.11IPython>=7.0.0上。它不附带Jupyter安装, 因此您需要安装一个用于交互式计算。

安装

要安装LineaPy,运行:

pip install lineapy

如果您想直接从源代码运行最新版本的LineaPy,请按照这里的说明进行操作。

LineaPy提供了几个扩展来扩展其核心功能,例如对PostgreSQL或Amazon S3的支持。 在这里了解更多关于这些和其他安装选项的信息。

接口

Jupyter和IPython

要在交互式计算环境(如Jupyter Notebook/Lab或IPython)中使用LineaPy,请在会话开始时执行以下命令来加载其扩展:

%load_ext lineapy

请注意:

  • 您必须将此命令作为给定会话中的第一个命令运行。在会话中途执行它 将导致LineaPy的错误行为。

  • 此命令仅为当前会话加载扩展。它不会延续到不同的会话,因此您需要为每个新会话重复执行它。

或者,您可以使用lineapy命令启动环境,如下所示:

lineapy jupyter notebook
lineapy jupyter lab
lineapy ipython

这将在相应的交互式shell应用程序中自动加载LineaPy扩展, 您无需为每个新会话手动加载它。

注意: 如果您的Jupyter环境有多个内核,请选择lineapy默认使用的Python 3 (ipykernel)

命令行界面

您也可以将LineaPy作为CLI命令或可运行的Python模块使用。要查看可用选项,请运行以下命令:

# 将LineaPy作为CLI命令
lineapy python --help

# 将LineaPy作为可运行的Python模块
python -m lineapy --help

快速入门

一旦安装并加载了LineaPy,您就可以开始使用该软件包了。让我们看一个使用鸢尾花数据集的简单示例,来演示如何使用LineaPy:1) 存储变量的历史,2) 获取其清理后的代码,以及3) 为该变量构建可执行的管道。

以下开发代码将线性回归模型拟合到鸢尾花数据集:

import lineapy
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 加载数据
url = "https://raw.githubusercontent.com/LineaLabs/lineapy/main/examples/tutorials/data/iris.csv"
df = pd.read_csv(url)

# 将每个物种映射到一种颜色
color_map = {"Setosa": "green", "Versicolor": "blue", "Virginica": "red"}
df["variety_color"] = df["variety"].map(color_map)

# 按物种绘制花瓣宽度与萼片宽度的散点图
df.plot.scatter("petal.width", "sepal.width", c="variety_color")
plt.show()

# 创建编码物种的虚拟变量
df["d_versicolor"] = df["variety"].apply(lambda x: 1 if x == "Versicolor" else 0)
df["d_virginica"] = df["variety"].apply(lambda x: 1 if x == "Virginica" else 0)

# 初始化模型
mod = LinearRegression()

# 拟合模型
mod.fit(
    X=df[["petal.width", "d_versicolor", "d_virginica"]],
    y=df["sepal.width"],
)

假设您对上面的代码感到满意,并决定保存训练好的模型。您可以使用以下代码将模型存储为LineaPy工件

# 将模型保存为工件
lineapy.save(mod, "iris_model")

LineaPy工件同时封装了值和代码,因此您可以轻松检索模型的代码,如下所示:

# 检索模型工件
artifact = lineapy.get("iris_model")

# 查看模型工件的代码
print(artifact.get_code())

打印语句将输出:

import pandas as pd
from sklearn.linear_model import LinearRegression

url = "https://raw.githubusercontent.com/LineaLabs/lineapy/main/examples/tutorials/data/iris.csv"
df = pd.read_csv(url)
color_map = {"Setosa": "green", "Versicolor": "blue", "Virginica": "red"}
df["variety_color"] = df["variety"].map(color_map)
df["d_versicolor"] = df["variety"].apply(lambda x: 1 if x == "Versicolor" else 0)
df["d_virginica"] = df["variety"].apply(lambda x: 1 if x == "Virginica" else 0)
mod = LinearRegression()
mod.fit(
    X=df[["petal.width", "d_versicolor", "d_virginica"]],
    y=df["sepal.width"],
)

请注意,这些是生成模型所需的最小必要步骤。也就是说,LineaPy已自动清理了原始代码,删除了不影响模型的多余操作(例如绘图)。

假设您被要求定期重新训练模型以考虑源数据的任何更新。您需要设置一个管道来训练模型 — LineaPy使这一过程变得简单,只需一个函数调用:

lineapy.to_pipeline(
    artifacts=["iris_model"],
    input_parameters=["url"],  # 指定要参数化的变量
    pipeline_name="iris_model_pipeline",
    output_dir="output/",
    framework="AIRFLOW",
)

该命令生成了几个可用于从UI或CLI执行管道的文件。(有关更多详细信息,请查看此教程。)

简而言之,LineaPy自动化了数据科学工作流程中耗时的手动步骤,帮助我们更快、更轻松地将工作投入生产。

使用报告

LineaPy收集匿名使用数据,以帮助我们的团队改进产品。只报告LineaPy的API调用和CLI命令。我们尽可能去除潜在的敏感信息,绝不会收集用户代码、数据、变量名或堆栈跟踪。

您可以通过设置环境变量来选择退出使用跟踪:

export LINEAPY_DO_NOT_TRACK=true

接下来做什么?

要了解有关LineaPy的更多信息,请查看项目文档,其中包含许多可供参考的示例。一些关键资源包括:

资源描述
文档这是我们的知识中心 — 有疑问时,从这里开始!
概念了解LineaPy的基本概念!
教程这些笔记本教程将帮助您更好地理解LineaPy的核心功能
用例这些领域示例说明了LineaPy如何在实际应用中提供帮助
API参考需要更多技术细节?这个参考可能会有帮助!
贡献想要贡献?这些说明将帮助您开始!
Slack有未解决的问题或疑问?加入我们的社区并提问!
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号