7个数据科学Python库将为您节省大量时间
在进行数据科学时,您可能会花费大量时间编写代码并等待计算机运行某些操作。我挑选了一些可以在这两种情况下节省您时间的Python库。即使您只将其中一个库纳入您的工具库,您仍然可以在下次项目工作时节省宝贵的时间。
Optuna
Optuna是一个开源的超参数优化框架。这意味着它可以帮助您找到机器学习模型的最佳超参数。
最基本(也可能是最知名的)的替代方案是sklearn的GridSearchCV,它将尝试多个超参数组合并根据交叉验证选择最佳超参数。
GridSearchCV将在您之前定义的空间内尝试组合。例如,对于随机森林分类器,您可能希望测试不同的估计器数量和树的最大深度的值。
因此,您将为每个这些超参数提供所有可能的值,然后GridSearchCV将查看所有组合。
与此不同,Optuna首先建议一个搜索空间,然后开始搜索。然后,它使用自己的尝试历史来确定要尝试的值。它用于此的方法是一种称为“树状帕森估计器”的贝叶斯优化算法。
这种不同的方法意味着,它不是简单地尝试任意值,而是在尝试之前寻找最佳候选项,这节省了本应用于尝试不太有前途的替代项的时间(并且可能还会产生更好的结果)。
最后,它是框架不可知的,这意味着您可以将其与TensorFlow、Keras、PyTorch或任何其他ML框架一起使用。
ITMO_FS
ITMO_FS是一个特征选择库,它帮助您为您的ML模型选择特征。观测次数越少,您就越需要谨慎使用过多的特征,以避免过度拟合。
通过“谨慎”,我是指您应该对模型进行正则化。通常来说,拥有一个更简单的模型(更少的特征)更好,因为它更容易理解和解释。
ITMO_FS可以帮助您完成这一点,其算法分为6个不同的类别:有监督的过滤器、无监督的过滤器、包装器、混合、嵌入和集成(尽管它主要侧重于有监督的过滤器)。
“有监督过滤器”算法的一个简单示例是根据它们与目标变量的相关性来选择特征。一个众所周知的“包装器”的示例是逆序选择,您可以尝试逐个删除特征,以查看它如何影响模型的预测能力。
以下是如何使用ITMO_FS以及它对模型分数的影响的一个简单示例:
from sklearn.linear_model import SGDClassifier
from ITMO_FS.embedded import MOS
X, y = make_classification(n_samples=300, n_features=10, random_state=0, n_informative=2)
sel = MOS()
trX = sel.fit_transform(X, y, smote=False)
cl1 = SGDClassifier()
cl1.fit(X, y)
cl1.score(X, y)
# 0.9033333333333333
cl2 = SGDClassifier()
cl2.fit(trX, y)
cl2.score(trX, y)
# 0.9433333333333334
ITMO_FS是一个相对较新的库,因此它仍然有点不稳定,其文档可能需要改进,但我仍建议您尝试一下。
shap-hypetune
到目前为止,我们已经看到了用于特征选择和超参数调整的库,但为什么不同时进行这两项操作呢?
这就是shap-hypetune的承诺。首先,让我们了解一下“SHAP”是什么:
“SHAP(SHapley Additive exPlanations)是一种解释任何机器学习模型输出的博弈论方法。”
SHAP是用于解释模型的输出最广泛使用的库之一,它通过提供每个特征对模型最终预测的重要性来工作。
shap-hypertune则从该方法中受益,它可以在选择最佳特征的同时选择最佳超参数。为什么要这样做?
独立选择特征和调整超参数可能会导致次优选择,因为您没有考虑它们之间的交互作用。
同时进行这两项操作不仅会考虑到这一点,还会节省一些编码时间(尽管可能会增加运行时间,因为搜索空间增加)。
搜索可以通过三种方式进行:网格搜索、随机搜索或贝叶斯搜索(另外,它还可以并行化)。
但需要注意的一点是,shap-hypertune仅适用于梯度提升模型!
PyCaret
PyCaret是一个开源的、低代码的机器学习库,可以自动化机器学习工作流程。它包括探索性数据分析、预处理、建模(包括可解释性)和MLOps。 让我们从他们的网站上的一些实际示例来看看它的工作原理:
# 加载数据集
from pycaret.datasets import get_data
diabetes = get_data('diabetes')
# 初始化设置
from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable')
# 比较模型
best = compare_models()
在几行代码中,您尝试了多个模型并比较了它们在主要分类指标上的表现。
它还允许您创建一个与模型进行交互的基本应用程序:
from pycaret.datasets import get_data
juice = get_data('juice')
from pycaret.classification import *
exp_name = setup(data = juice, target = 'Purchase')
lr = create_model('lr')
create_app(lr)
最后,您可以轻松创建一个用于您的模型的API和Docker文件:
from pycaret.datasets import get_data
juice = get_data('juice')
from pycaret.classification import *
exp_name = setup(data = juice, target = 'Purchase')
lr = create_model('lr')
create_api(lr, 'lr_api')
create_docker('lr_api')
它几乎没有比这更简单的了,对吧?
它是如此完整,以至于很难在这里覆盖所有内容,所以我可能会在不久的将来专门写一篇文章来介绍它,但我建议您现在下载它并开始使用它,以了解一些实际应用中的功能。
floWeaver
floWeaver从流数据集生成桑基图。如果您不知道什么是桑基图,这里有一个示例:
当显示与转化漏斗、营销路径或公司或政府的预算分配相关的数据时,它们可以非常有帮助。
入口数据应具有以下格式:“源x目标x值”,创建此类型的绘图只需要一行代码(这相当具体,但也非常直观)。
Gradio
如果您已经阅读了《敏捷数据科学》,您就知道拥有一个前端界面,让最终用户从项目的开始就与数据进行交互是多么有帮助。
即使对于您自己,它也有助于您熟悉数据并发现任何不一致之处。用于此目的的最常用工具之一是Flask,但它对初学者不太友好,需要多个文件以及对html、css等的一些知识。
Gradio允许您通过设置输入类型(文本、复选框等)、函数和输出来创建简单的界面。虽然它似乎比Flask可定制性更低,但它更加直观。
此外,由于Gradio现在已经加入了Huggingface,他们提供了将您的Gradio模型永久托管在互联网上的基础设施,而且是免费的!
Terality
理解Terality的最佳方法是将其视为“Pandas,但更快”。
这并不意味着完全替代Pandas并需要重新学习如何使用数据帧:Terality的语法与Pandas完全相同。
实际上,他们甚至建议您“import Terality as pd”,并继续以您习惯的方式编码。
它有多快?他们的网站有时说它比Pandas快30倍,有时说是10-100倍。
另一个重要的特点是Terality支持并行处理,不在本地运行,这意味着您的8GB RAM笔记本电脑将不再出现内存错误!
那它在幕后是如何工作的呢?理解Terality的一个好比喻是,他们在其基础设施上运行一个Spark后端,该后端是一个Pandas前端的一部分,您在本地使用它。
基本上,与其在您的计算机上运行事务,您将使用他们的计算机,在完全的无服务器方式下(不需要设置基础设施)。
本文由 mdnice 多平台发布