>  기사  >  백엔드 개발  >  데이터 과학 생산성을 높이고 귀중한 시간을 절약할 수 있는 8개의 Python 라이브러리

데이터 과학 생산성을 높이고 귀중한 시간을 절약할 수 있는 8개의 Python 라이브러리

PHPz
PHPz앞으로
2023-04-12 17:01:191228검색

데이터 과학을 할 때 코딩하고 컴퓨터가 무언가를 실행할 때까지 기다리는 데 많은 시간을 낭비할 수 있습니다. 그래서 저는 여러분의 소중한 시간을 절약하는 데 도움이 될 수 있는 몇 가지 Python 라이브러리를 선택했습니다.

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가지 범주로 나뉩니다(주로 감독 필터에 중점을 두지만).

"감독 필터" 알고리즘의 간단한 예는 대상 변수와의 상관 관계를 기반으로 기능을 선택하는 것입니다. "역방향 선택"을 사용하면 기능을 하나씩 제거하고 이러한 기능이 모델의 예측 능력에 어떤 영향을 미치는지 확인할 수 있습니다.

다음은 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"가 무엇인지 이해하는 것부터 시작하겠습니다.

"SHAP(SHapley Additive exPlanations)은 모든 기계 학습 모델의 출력을 해석하는 게임 이론 방법입니다.

SHAP는 모델 해석에 가장 일반적으로 사용되는 방법입니다. 널리 사용되는 라이브러리 중 하나인 이 라이브러리는 모델의 최종 예측에 대한 각 기능의 중요성을 생성하여 작동합니다.

반면에 shap-hypertune은 최고의 기능과 최고의 하이퍼파라미터를 선택하는 이 접근 방식의 이점을 누리고 있습니다. 기능을 함께 결합하려는 이유는 무엇입니까? 기능을 선택하고 하이퍼 매개변수를 독립적으로 조정하면 기능 간의 상호 작용을 고려하지 않고 차선책을 선택할 수 있습니다. 두 가지를 동시에 수행하면 이를 고려할 뿐만 아니라 코딩 시간도 절약됩니다(단, 검색 공간이 늘어나 런타임이 늘어날 수 있음).

검색은 그리드 검색, 무작위 검색, 베이지안 검색(또한 병렬화 가능)의 3가지 방법으로 수행할 수 있습니다.

그러나 shap-hypertune은 그래디언트 부스팅 모델에서만 작동합니다!

4. PyCaret

PyCaret은 기계 학습 작업 흐름을 자동화하는 오픈 소스, 로우 코드 기계 학습 라이브러리입니다. 탐색적 데이터 분석, 전처리, 모델링(해석 가능성 포함) 및 MLOps를 다룹니다.

웹사이트에서 몇 가지 실제 예를 살펴보고 작동 방식을 살펴보겠습니다.

# 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()

데이터 과학 생산성을 높이고 귀중한 시간을 절약할 수 있는 8개의 Python 라이브러리

단 몇 줄의 코드만으로 여러 모델을 시도하고 주요 분류 측정 항목에서 비교할 수 있습니다. 비교가 이루어졌습니다. .

모델과 상호 작용하는 기본 애플리케이션을 생성할 수도 있습니다.

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는 스트리밍 데이터 세트에서 Sankey 다이어그램을 생성할 수 있습니다. Sankey 다이어그램이 무엇인지 모르는 경우 예를 들면 다음과 같습니다.

데이터 과학 생산성을 높이고 귀중한 시간을 절약할 수 있는 8개의 Python 라이브러리

전환 유입 경로, 마케팅 여정 또는 예산 할당에 대한 데이터를 표시할 때 매우 유용합니다(위 예). 포털 데이터는 다음 형식이어야 합니다: "소스 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 BaseContext
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 = BaseContext(model=model,
criterion=criterion,
optimizer=optimizer,
scheduler=scheduler,
context_tag="ex01")
train = c.make_train_session(device, dataloader=loaders)
train.train(epochs=10)

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

위 내용은 데이터 과학 생산성을 높이고 귀중한 시간을 절약할 수 있는 8개의 Python 라이브러리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제