一个Python AutoML工具,用于快速探索和实验有监督的机器学习管道。

atom-ml的Python项目详细描述


ATOM

优化建模的自动化工具

作者:tvdboom电子邮件:m.524687@gmail.com

存储库:

Project Status: ActiveConda RecipePython 3.6|3.7|3.8|3.9License: MITConda Platforms

发布信息:

PyPI versionConda VersionDownloads

生成状态:

Build StatusAzure Pipelinescodecov

代码分析:

Code style: blackLanguage grade: PythonTotal alerts



说明

在数据科学中没有一个神奇的公式可以告诉我们哪种类型的机器 学习算法在特定的用例中表现最好。不同型号 更适合于不同类型的数据和不同的问题。充其量, 你可以跟着一些rough guide 关于如何处理关于在数据上使用哪个模型的问题,但是 这些往往更令人困惑,而不是有益的。最佳实践表明 我们从一个简单的模型(例如线性回归)开始,然后逐步建立更多 复杂模型(如logistic回归->随机森林->多层感知器) 如果你对结果不满意。不幸的是,不同的模型需要 不同的数据清理步骤、不同类型/数量的功能、调整新设置 为了这个目的重构代码会很无聊 而且很费时。正因为如此,许多数据科学家最终只能使用这个模型 他们最为人所知,并且在没有尝试过不同的情况下对这个特定的模型进行微调 一个。这可能导致性能不佳(因为模型不是正确的) 或者时间管理不善(因为你本可以取得类似的成绩) 性能更简单/更快的型号)。在

ATOM是来帮助我们解决这些问题的。只需几行代码,就可以 执行基本数据清理步骤,选择相关功能并比较性能 一个给定数据集上的多个模型。ATOM应该能够提供快速的洞察力 哪种算法最适合手头的任务,并提供 ML方案的可行性。在

重要的是要认识到ATOM并不是用来代替数据的所有工作 科学家在把他的模型投入生产前必须做些什么。原子不会吐出来 只需在API中调整一些参数,即可生产就绪的模型。帮了你之后 要确定正确的模型,您很可能需要使用 使用特定于用例的特性和数据清理步骤,以实现最大性能。在

这听起来有点像AutoML,ATOM和AutoML有什么不同 auto-sklearn还是{a18}? 好吧,ATOM做AutoML是因为它可以帮助您找到 具体任务,但与上述包相反,它并不积极 寻找最佳型号。它只需运行所有这些,然后让您选择一个 你觉得最适合你。AutoML包通常是黑盒:如果您提供 数据,它将神奇地返回一个工作模型。虽然效果很好,但他们经常 生产复杂的管道,解释性低,难以销售给企业。 在这方面,ATOM表现出色。对管道的每一步都进行了说明,并使用 提供了绘图方法,很容易证明为什么模型比 其他的。在

ATOM管道采取的步骤示例:

  1. 数据清理
    • 缺少句柄值
    • 分类特征编码
    • 删除异常值
    • 平衡数据集
  2. 特征工程
    • 创建新的非线性特征
    • 删除多共线特征
    • 删除差异太小的功能
    • 根据统计测试选择最有希望的特征
  3. 培训和验证多个模型
    • 用贝叶斯优化方法选择超参数
    • 根据提供的数据训练和测试模型
    • 进行装袋,以评估输出的稳健性
  4. 分析结果
    • 获取各种指标的模型分数
    • 制造比较模型性能的图



diagram



安装

NOTE: Since atom was already taken, download the package under the name ^{}!

通过pip轻松安装ATOM的最新版本:

$pipinstall-Uatom-ml

或通过conda

^{pr2}$



使用

调用ATOMClassifierATOMRegressor类并提供要使用的数据:

from sklearn.datasets import load_breast_cancer
from atom import ATOMClassifier

X, y = load_breast_cancer(return_X_y)
atom = ATOMClassifier(X, y, logger='auto', n_jobs=2, verbose=2)

有多种ATOM清理方法可帮助您准备数据:

atom.impute(strat_num='knn', strat_cat='most_frequent',  min_frac_rows=0.1)  
atom.encode(strategy='Target', max_onehot=8, frac_to_other=0.05)  
atom.feature_selection(strategy='PCA', n_features=12)

使用要比较的模型运行管道:

atom.run(
    models=['LR', 'LDA', 'XGB', 'lSVM'],
    metric='f1',
    n_calls=25,
    n_initial_points=10,
    bagging=4
)

分析结果:

atom.plot_bagging(figsize=(9, 6), filename='bagging_results.png')  
atom.LDA.plot_confusion_matrix(normalize=True, filename='cm.png')



文件

有关ATOM的更多信息,请参见项目的documentation。在

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

推荐PyPI第三方库


热门话题
Android中Twitter共享的java xAuth身份验证?   带有@XmlAnyAttribute和方法的java Bug?(使用JAXB-RI)   安卓 ArrayAdapter导致java。lang.NullPointerException   java如何使用JExel从现有excel文件中删除工作表   java树映射随机停止正确返回值   使用switch和scanner类java使用用户选择   java JCalendar多天选择   Java文件zip正在创建损坏的文件   Ajax调用中的java未定义错误   java处理JSON更改信息的最佳方法   java JNI不适用于AppKit线程   java在运行时为JTable的特定行设置背景色   java如何在for循环中添加按钮?   java在getclass()方法之后强制转换对象