当前位置: 首页 > 后端技术 > Python

8个可以提升数据科学工作流程并节省宝贵时间的Python库

时间:2023-03-25 22:37:17 Python

在进行数据科学时,您可能会浪费大量时间编码和等待计算机运行某些东西。因此,我选择了一些可以帮助您节省宝贵时间的Python库。1.OptunaOptuna是一个开源的超参数优化框架,可以自动为机器学习模型寻找最佳超参数。最基本(也可能是众所周知)的替代方案是sklearn的GridSearchCV,它将尝试多种超参数组合,并根据交叉验证选择最佳组合。GridSearchCV将在先前定义的空间内尝试组合。例如,对于随机森林分类器,您可能想要测试几棵不同树的最大深度。GridSearchCV为每个超参数提供所有可能的值,并查看所有组合。Optuna使用自己在定义的搜索空间中的尝试历史来确定接下来要尝试的值。它使用的方法是一种称为“Tree-structuredParzenEstimator”的贝叶斯优化算法。这种不同的方法意味着它不是毫无意义地尝试每个值,而是在尝试之前寻找最佳候选值,这样可以节省时间,否则这些时间将花费在尝试没有希望的替代方案上(并且可能还会产生更好的结果)。最后,它与框架无关,这意味着您可以将它与TensorFlow、Keras、PyTorch或任何其他ML框架一起使用。2.ITMO_FSITMO_FS是一个特征选择库,可以对ML模型进行特征选择。您的观察越少,您就越需要小心处理过多的特征以避免过度拟合。所谓“慎”,就是规范你的模型。通常更简单的模型(更少的特征)更容易理解和解释。ITMO_FS算法分为6个不同的类别:有监督的过滤器、无监督的过滤器、包装器、混合、嵌入式、集成(尽管它主要关注有监督的过滤器)。“监督过滤器”算法的一个简单示例是根据特征与目标变量的相关性来选择特征。“反向选择”,你可以尝试一个一个地去除特征,并确认这些特征如何影响模型的预测能力。以下是如何使用ITMO_FS及其对模型分数影响的通用示例:>>>fromsklearn.linear_modelimportSGDClassifier>>>fromITMO_FS.embeddedimportMOS>>>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.94333333333333334ITMO_FS是A相对较新的库,所以它仍然有点不稳定,但我仍然建议尝试一下。3.shap-hypetune到目前为止,我们已经看到了用于特征选择和超参数调整的库,但为什么不同时使用两者呢?这就是shap-hypetune所做的。让我们从了解“SHAP”是什么开始:“SHAP(SHapleyAdditiveexPlanations)是一种博弈论方法,用于解释任何机器学习模型的输出。”SHAP是使用最广泛的模型解释库之一,其工作原理是将每个特征的重要性产生到模型的最终预测中。另一方面,shap-hypertune受益于这种方法,可以在选择最佳特征的同时选择最佳超参数。为什么要融合在一起?独立地选择特征和调整超参数可能会导致次优选择,因为没有考虑它们的相互作用。同时执行这两项操作不仅可以做到这一点,而且还可以节省一些编码时间(尽管由于搜索空间的增加可能会增加运行时间)。搜索可以通过3种方式完成:网格搜索、随机搜索或贝叶斯搜索(另外,它可以并行化)。然而,shap-hypertune仅适用于梯度提升模型!4.PyCaretPyCaret是一个开源、低代码的机器学习库,可以自动化机器学习工作流程。它涵盖探索性数据分析、预处理、建模(包括可解释性)和MLOps。让我们看看他们网站上的一些实际例子,看看它是如何工作的:variable')#comparemodelsbest=compare_models()只需几行代码,就可以在主要分类指标上尝试和比较多个模型。它还允许创建一个与模型交互的基本应用程序:frompycaret.datasetsimportget_datajuice=get_data('juice')frompycaret.classificationimport*exp_name=setup(data=juice,target='Purchase')lr=create_model('lr')create_app(lr)最后,您可以轻松地为您的模型创建API和Docker文件:='Purchase')lr=create_model('lr')create_api(lr,'lr_api')create_docker('lr_api')再简单不过了,对吧?PyCaret是一个非常完整的库,很难在这里涵盖所有内容,我建议您现在下载它并开始使用它,以在实践中了解它的一些功能。5.floWeaverFloWeaver可以从流数据集生成桑基图。如果您不知道桑基图是什么,这里有一个示例:它们在显示有关转化漏斗、营销旅程或预算分配的数据时非常有用(上例)。入口数据应该是这样的格式:“源x目标x值”,只需要一行代码就可以创建这样一个图(非常具体,但也非常直观)。6.Gradio如果你读过敏捷数据科学,你就会知道拥有一个前端界面是多么有用,它可以让最终用户从项目一开始就与数据进行交互。总的来说,Flask是Python中最常用的,但对初学者不太友好,它需要多个文件和一些html、css等知识。Gradio允许你通过设置输入类型(文本、复选框)来创建简单的界面等),功能和输出。虽然它看起来不如Flask可定制,但它更直观。由于Gradio现在是Huggingface的一部分,因此可以在Internet上永久托管Gradio模型,而且是免费的!7.Terality理解Terality的最好方法是“Pandas,但更快”。这并不意味着完全替换pandas并且必须重新学习如何使用df:Terality具有与Pandas完全相同的语法。事实上,他们甚至建议“将Terality导入为pd”并继续按照他们习惯的方式进行编码。它有多快他们的网站有时说它快30倍,有时快10到100倍。另一个重要的事情是Terality允许并行化并且它不会本地运行,这意味着您的8GBRAM笔记本电脑上不会再出现MemoryErrors!但它在幕后是如何运作的呢?理解Terality的一个很好的比喻是想到他们在本地使用的Pandas兼容语法并将其编译成Spark的计算操作,并使用Spark进行后端计算。所以计算不是在本地运行,而是把计算任务提交到他们的平台上。所以有什么问题?您每月最多只能免费处理1TB的数据。如果您需要更多,则必须每月至少支付49美元。1TB/月对于测试工具和个人项目来说可能绰绰有余,但如果你需要它用于公司实际使用,你肯定要付费。8.torch-handle如果你是Pytorch的用户,可以试试这个库。torchhandle是PyTorch的辅助框架。它将PyTorch繁琐重复的训练代码抽象出来,让数据科学家可以专注于数据处理、模型创建和参数优化,而不是编写重复的训练循环代码。使用torchhandle可以让你的代码更简洁易读,让你的开发任务更有效率。torchhandle将Pytorch的训练和推理过程进行了抽象和抽取,只需几行代码就可以实现PyTorch的深度学习流水线。并且可以生成完整的训练报告,还可以集成tensorboard进行可视化。fromcollectionsimportOrderedDictimporttorchfromtorchhandle.workflowimportBaseContextclassNet(torch.nn.Module):def__init__(self,):super().__init__()self.layer=torch.nn.Sequential(OrderedDict([('l1',torch.nn.Linear(10,20)),('a1',torch.nn.ReLU()),('l2',torch.nn.Linear(20,10)),('a2',火炬.nn.ReLU()),('l3',torch.nn.Linear(10,1))]))defforward(self,x):x=self.layer(x)返回xnum_samples,num_features=int(1e4),int(1e1)X,Y=torch.rand(num_samples,num_features),torch.rand(num_samples)数据集=torch.utils.data.TensorDataset(X,Y)trn_loader=torch.utils.data.DataLoader(数据集,batch_size=64,num_workers=0,shuffle=True)loaders={"train":trn_loader,"valid":trn_loader}device='cuda'iftorch.cuda.is_available()else'cpu'model={"fn":Net}criterion={"fn":torch.nn.MSELoss}optimizer={"fn":torch.optim.Adam,"args":{"lr":0.1},"params":{"layer.l1.weight":{"lr":0.01},"层.l1.bias":{"lr":0.02}}}scheduler={"fn":torch.optim.lr_scheduler.StepLR,"args":{"step_size":2,"gamma":0.9}}c=BaseContext(model=model,criterion=criterion,optimizer=optimizer,scheduler=scheduler,context_tag="ex01")train=c.make_train_session(device,dataloader=loaders)train.train(epochs=10)定义模型,设置数据设置,配置optimizer和loss函数自动训练,是不是和TF类似https://www.overfit.cn/post/c333c3f3a2b2409dae03fea56c1daae3作者:ArthurMello