0

0

提高数据科学效率的八个Python神库!

王林

王林

发布时间:2023-04-12 19:46:15

|

1772人浏览过

|

来源于51CTO.COM

转载

1、Optuna

Optuna 是一个开源的超参数优化框架,它可以自动为机器学习模型找到最佳超参数。

最基本的(也可能是众所周知的)替代方案是 sklearn 的 GridSearchCV,它将尝试多种超参数组合并根据交叉验证选择最佳组合。

GridSearchCV 将在先前定义的空间内尝试组合。例如,对于随机森林分类器,可能想要测试几个不同的树的最大深度。GridSearchCV 会提供每个超参数的所有可能值,并查看所有组合。

Optuna会在定义的搜索空间中使用自己尝试的历史来确定接下来要尝试的值。它使用的方法是一种称为“Tree-structured Parzen Estimator”的贝叶斯优化算法。

这种不同的方法意味着它不是无意义的地尝试每一个值,而是在尝试之前寻找最佳候选者,这样可以节省时间,否则这些时间会花在尝试没有希望的替代品上(并且可能也会产生更好的结果)。

最后,它与框架无关,这意味着您可以将它与 TensorFlow、Keras、PyTorch 或任何其他 ML 框架一起使用。

2、ITMO_FS

ITMO_FS 是一个特征选择库,它可以为 ML 模型进行特征选择。拥有的观察值越少,就越需要谨慎处理过多的特征,以避免过度拟合。所谓“谨慎”意思是应该规范你的模型。通常一个更简单的模型(更少的特征),更容易理解和解释。

ITMO_FS 算法分为 6 个不同的类别:监督过滤器、无监督过滤器、包装器、混合、嵌入式、集成(尽管它主要关注监督过滤器)。

“监督过滤器”算法的一个简单示例是根据特征与目标变量的相关性来选择特征。“backward selection”,可以尝试逐个删除特征,并确认这些特征如何影响模型预测能力。

这是一个关于如何使用 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是一个相对较新的库,因此它仍然有点不稳定,但我仍然建议尝试一下。

3、shap-hypetune

到目前为止,我们已经看到了用于特征选择和超参数调整的库,但为什么不能同时使用两者呢?这就是 shap-hypetune 的作用。

让我们从了解什么是“SHAP”开始:

“SHAP(SHapley Additive exPlanations)是一种博弈论方法,用于解释任何机器学习模型的输出。”

SHAP 是用于解释模型的最广泛使用的库之一,它通过产生每个特征对模型最终预测的重要性来工作。

另一方面,shap-hypertune 受益于这种方法来选择最佳特征,同时也选择最佳超参数。你为什么要合并在一起?因为没有考虑它们之间的相互作用,独立地选择特征和调整超参数可能会导致次优选择。同时执行这两项不仅考虑到了这一点,而且还节省了一些编码时间(尽管由于搜索空间的增加可能会增加运行时间)。

搜索可以通过 3 种方式完成:网格搜索、随机搜索或贝叶斯搜索(另外,它可以并行化)。

但是,shap-hypertune 仅适用于梯度提升模型!

4、PyCaret

PyCaret 是一个开源、低代码的机器学习库,可自动执行机器学习工作流。它涵盖探索性数据分析、预处理、建模(包括可解释性)和 MLOps。

让我们看看他们网站上的一些实际示例,看看它是如何工作的:

BiLin AI
BiLin AI

免费的多语言AI搜索引擎

下载
# load dataset 
from pycaret.datasets import get_data 
diabetes = get_data('diabetes') 
 
# init setup 
from pycaret.classification import * 
clf1 = setup(data = diabetes, target = 'Class variable') 
 
# compare models 
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')

没有比这更容易的了,对吧?

PyCaret是一个非常完整的库,在这里很难涵盖所有内容,建议你现在下载并开始使用它来了解一些 其在实践中的能力。

5、floWeaver

FloWeaver 可以从流数据集中生成桑基图。如果你不知道什么是桑基图,这里有一个例子:

图片

在显示转化漏斗、营销旅程或预算分配的数据时,它们非常有用(上例)。入口数据应采用以下格式:“源 x 目标 x 值”,只需一行代码即可创建此类图(非常具体,但也非常直观)。

6、Gradio

如果你阅读过敏捷数据科学,就会知道拥有一个让最终用户从项目开始就与数据进行交互的前端界面是多么有帮助。一般情况下在Python中最常用是 Flask,但它对初学者不太友好,它需要多个文件和一些 html、css 等知识。

Gradio 允许您通过设置输入类型(文本、复选框等)、功能和输出来创建简单的界面。尽管它似乎不如 Flask 可定制,但它更直观。

由于 Gradio 现在已经加入 Huggingface,可以在互联网上永久托管 Gradio 模型,而且是免费的!

7、Terality

理解 Terality 的最佳方式是将其视为“Pandas ,但速度更快”。这并不意味着完全替换 pandas 并且必须重新学习如何使用df:Terality 与 Pandas 具有完全相同的语法。实际上,他们甚至建议“import Terality as pd”,并继续按照以前的习惯的方式进行编码。

它快多少?他们的网站有时会说它快 30 倍,有时快 10 到 100 倍。

另一个重要是 Terality 允许并行化并且它不在本地运行,这意味着您的 8GB RAM 笔记本电脑将不会再出现 MemoryErrors!

但它在背后是如何运作的呢?理解 Terality 的一个很好的比喻是可以认为他们在本地使用的 Pandas 兼容的语法并编译成 Spark 的计算操作,使用Spark进行后端的计算。所以计算不是在本地运行,而是将计算任务提交到了他们的平台上。

那有什么问题呢?每月最多只能免费处理 1TB 的数据。如果需要更多则必须每月至少支付 49 美元。1TB/月对于测试工具和个人项目可能绰绰有余,但如果你需要它来实际公司使用,肯定是要付费的。

8、torch-handle

如果你是Pytorch的使用者,可以试试这个库。

torchhandle是一个PyTorch的辅助框架。它将PyTorch繁琐和重复的训练代码抽象出来,使得数据科学家们能够将精力放在数据处理、创建模型和参数优化,而不是编写重复的训练循环代码。使用torchhandle,可以让你的代码更加简洁易读,让你的开发任务更加高效。

torchhandle将Pytorch的训练和推理过程进行了抽象整理和提取,只要使用几行代码就可以实现PyTorch的深度学习管道。并可以生成完整训练报告,还可以集成tensorboard进行可视化。

from collections import OrderedDict 
import torch 
from torchhandle.workflow import BaseConpython 
 
 
class Net(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', torch.nn.ReLU()), 
('l3', torch.nn.Linear(10, 1)) 
])) 
 
def forward(self, x): 
x = self.layer(x) 
return x 
 
num_samples, num_features = int(1e4), int(1e1) 
X, Y = torch.rand(num_samples, num_features), torch.rand(num_samples) 
dataset = torch.utils.data.TensorDataset(X, Y) 
trn_loader = torch.utils.data.DataLoader(dataset, batch_size=64, num_workers=0, shuffle=True) 
loaders = {"train": trn_loader, "valid": trn_loader} 
device = 'cuda' if torch.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}, 
"layer.l1.bias": {"lr": 0.02}} 
 } 
scheduler = {"fn": torch.optim.lr_scheduler.StepLR, 
 "args": {"step_size": 2, "gamma": 0.9} 
 } 
 
c = BaseConpython(model=model, 
criterion=criterion, 
optimizer=optimizer, 
scheduler=scheduler, 
conpython_tag="ex01") 
train = c.make_train_session(device, dataloader=loaders) 
train.train(epochs=10)

定义一个模型,设置数据集,配置优化器、损失函数就可以自动训练了,是不是和TF差不多了。

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python Flask框架
Python Flask框架

本专题专注于 Python 轻量级 Web 框架 Flask 的学习与实战,内容涵盖路由与视图、模板渲染、表单处理、数据库集成、用户认证以及RESTful API 开发。通过博客系统、任务管理工具与微服务接口等项目实战,帮助学员掌握 Flask 在快速构建小型到中型 Web 应用中的核心技能。

106

2025.08.25

Python Flask Web框架与API开发
Python Flask Web框架与API开发

本专题系统介绍 Python Flask Web框架的基础与进阶应用,包括Flask路由、请求与响应、模板渲染、表单处理、安全性加固、数据库集成(SQLAlchemy)、以及使用Flask构建 RESTful API 服务。通过多个实战项目,帮助学习者掌握使用 Flask 开发高效、可扩展的 Web 应用与 API。

81

2025.12.15

Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

81

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

34

2026.01.31

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

280

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

516

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

417

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

454

2024.04.08

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.7万人学习

MySQL 教程
MySQL 教程

共48课时 | 2.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号