知行编程网知行编程网  2022-07-03 17:00 知行编程网 隐藏边栏 |   抢沙发  2 
文章评分 0 次,平均分 0.0

一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到

来自 | 机器之心

igel 是 GitHub 上的一个热门工具,基于 scikit-learn 构建,支持 sklearn 的所有机器学习功能,如回归、分类和聚类。用户无需编写一行代码即可使用机器学习模型,只要有 yaml 或 json 文件,来描述你想做什么即可。


一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


一行代码不用写,就可以训练、测试和使用模型,还有这样的好事?

最近,软件工程师 Nidhal Baccouri 就在 GitHub 上开源了一个这样的机器学习工具——igel,并登上了 GitHub 热榜。目前,该项目 star 量已有 1.5k。

项目地址:https://github.com/nidhaloff/igel

该项目旨在为每一个人(包括技术和非技术人员)提供使用机器学习的便捷方式。

项目作者这样描述创建 igel 的动机:「有时候我需要一个用来快速创建机器学习原型的工具,不管是进行概念验证还是创建快速 draft 模型。我发现自己经常为写样板代码或思考如何开始而犯愁。于是我决定创建 igel。

igel 基于 scikit-learn 构建,支持 sklearn 的所有机器学习功能,如回归、分类和聚类。用户无需编写一行代码即可使用机器学习模型,只要有 yaml 或 json 文件,来描述你想做什么即可。

其基本思路是在人类可读的 yaml 或 json 文件中将所有配置进行分组,包括模型定义、数据预处理方法等,然后让 igel 自动化执行一切操作。用户在 yaml 或 json 文件中描述自己的需求,之后 igel 使用用户的配置构建模型,进行训练,并给出结果和元数据。

igel 目前支持的所有配置如下所示:


这款工具具备以下特性:

  • 支持所有机器学习 SOTA 模型(甚至包括预览版模型);

  • 支持不同的数据预处理方法;

  • 既能写入配置文件,又能提供灵活性和数据控制;

  • 支持交叉验证;

  • 支持 yaml 和 json 格式;

  • 支持不同的 sklearn 度量,进行回归、分类和聚类;

  • 支持多输出 / 多目标回归和分类;

  • 在并行模型构建时支持多处理。


如前所示,igel 支持回归、分类和聚类模型,包括我们熟悉的线性回归、贝叶斯回归、支持向量机、Adaboost、梯度提升等。

一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到

igel 支持的回归、分类和聚类模型。

快速入门

为了让大家快速上手 igel,项目作者在「README」文件中提供了详细的入门指南。

运行以下命令可以获取 igel 的帮助信息:


一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


第一步是提供一份 yaml 文件(你也可以使用 json)。你可以手动创建一个. yaml 文件并自行编辑。但如何你很懒,也可以选择使用 igel init 命令来快速启动:


运行该命令之后,当前的工作目录中就有了一个 igel.yaml 文档。你可以检查这个文件并进行修改,也可以一切从头开始。

一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


在下面这个例子中,作者使用随机森林来判断一个人是否患有糖尿病。他用到的数据集是著名的「Pima Indians Diabetes Database」。


注意,作者将 n_estimators 和 max_depth 传递给了模型,用作模型的附加参数。如果你不提供参数,模型就会使用默认参数。你不需要记住每个模型的参数。相反,你可以在终端运行 igel models 进入交互模式。在交互模式下,系统会提示你输入你想要使用的模型以及你想要解决的问题的类型。接下来,Igel 将展示出有关模型的信息和链接。通过该链接,你可以看到可用参数列表以及它们的使用方法。

igel 的使用方式应该是从终端(igel CLI):

在终端运行以下命令来拟合 / 训练模型,你需要提供数据集和 yaml 文件的路径。


一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


接下来,你可以评估训练 / 预训练好的模型:


一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


如果你对评估结果比较满意,就可以使用这个训练 / 预训练好的模型执行预测。



一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


你可以使用一个「experiment」命令将训练、评估和预测结合到一起:


一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


当然,如果你想写代码也是可以的:

交互模式

交互模式是 v0.2.6 及以上版本中新添加的,该模式可以让你按照自己喜欢的方式写参数。

也就是说,你可以使用 fit、evaluate、predict、experiment 等命令而无需指定任何额外的参数,比如:


如果你只是编写这些内容并点击「enter」,系统将提示你提供额外的强制参数。0.2.5 及以下版本会报错,所以你需要使用 0.2.6 及以上版本。

一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到


如 demo 所示,你不需要记住这些参数,igel 会提示你输入这些内容。具体而言,Igel 会提供一条信息,解释你需要输入哪个参数。括号之间的值表示默认值。

端到端训练示例

项目作者给出了使用 igel 进行端到端训练的完整示例,即使用决策树算法预测某人是否患有糖尿病。你需要创建一个 yaml 配置文件,数据集可以在 examples 文件夹中找到。

拟合 / 训练模型:



现在,igel 将拟合你的模型,并将其保存在当前目录下的 model_results 文件夹中。

评估模型:

现在开始评估预训练模型。Igel 从 model_results 文件夹中加载预训练模型并进行评估。你只需要运行 evaluate 命令并提供评估数据的路径即可。


Igel 进行模型评估,并将 statistics/results 保存在 model_results 文件夹中的 evaluation.json 文件中。

预测:

这一步使用预训练模型预测新数据。这由 igel 自动完成,你只需提供预测数据的路径即可。


Igel 使用预训练模型执行预测,并将其保存在 model_results 文件夹中的 predictions.csv 文件中。

高阶用法

你还可以通过在 yaml 文件中提供某些预处理方法或其他操作来执行它们。关于 yaml 配置文件请参考 GitHub 详细介绍。在下面的示例中,将数据拆分为训练集 80%,验证 / 测试集 20%。同样,数据在拆分时会被打乱。

此外,可以通过用均值替换缺失值来对数据进行预处理:


然后,可以通过运行 igel 命令来拟合模型:


评估:


预测:


参考链接:https://medium.com/@nidhalbacc/machine-learning-without-writing-code-984b238dd890

<pre style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;white-space: normal;font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-bottom: 15px;padding-right: 0em;padding-left: 0em;max-width: 100%;color: rgb(127, 127, 127);font-size: 12px;font-family: sans-serif;line-height: 25.5938px;letter-spacing: 3px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;font-size: 16px;font-family: 微软雅黑;caret-color: red;box-sizing: border-box !important;overflow-wrap: break-word !important;">为您推荐</span></strong></span></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;">干货 | 算法工程师超实用技术路线图</section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 14px;">Github上10个超好看的可视化面板,nice!</span></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 14px;">吴恩达上新:生成对抗网络(GAN)专项课程</span><br  /></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;">思考 | 一滴水从高处落下来,会不会砸死人?</section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;">你一定从未看过如此通俗易懂的YOLO系列解读 (下)</section></section></section></section></section></section></section></section></section>

一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到

本篇文章来源于: 深度学习这件小事

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享