ホームページ  >  記事  >  バックエンド開発  >  データサイエンスの効率を向上させる 8 つの Python ライブラリ!

データサイエンスの効率を向上させる 8 つの Python ライブラリ!

王林
王林転載
2023-04-12 19:46:151550ブラウズ

1. Optuna

Optuna は、機械学習モデルに最適なハイパーパラメーターを自動的に見つけることができるオープンソースのハイパーパラメーター最適化フレームワークです。

最も基本的な (そしておそらくよく知られている) 代替手段は、sklearn の GridSearchCV です。これは、複数のハイパーパラメーターの組み合わせを試し、相互検証に基づいて最適なものを選択します。

GridSearchCV は、以前に定義されたスペース内での組み合わせを試みます。たとえば、ランダム フォレスト分類器の場合、いくつかの異なるツリーの最大深さをテストしたい場合があります。 GridSearchCV は、各ハイパーパラメータの可能なすべての値を提供し、すべての組み合わせを調べます。

Optuna は、定義された検索スペース内での独自の試行履歴を使用して、次に試行する値を決定します。使用する手法は「ツリー構造パルゼン推定器」と呼ばれるベイジアン最適化アルゴリズムです。

この異なるアプローチは、すべての値を無駄に試すのではなく、試す前に最適な候補を探し、絶望的な代替案の試行に費やされる時間を節約することを意味します (また、より良い結果が得られる可能性もあります)。

最後に、これはフレームワークに依存しないため、TensorFlow、Keras、PyTorch、またはその他の ML フレームワークで使用できます。

2. ITMO_FS

ITMO_FS は、ML モデルの特徴選択を実行できる特徴選択ライブラリです。観測値が少ないほど、過剰適合を避けるために特徴量が多すぎることに注意する必要があります。 「賢明」とは、モデルを標準化する必要があることを意味します。通常、より単純なモデル (機能が少ない) の方が理解しやすく、解釈しやすくなります。

ITMO_FS アルゴリズムは、教師ありフィルター、教師なしフィルター、ラッパー、ハイブリッド、組み込み、アンサンブルの 6 つの異なるカテゴリに分類されます (ただし、主に教師ありフィルターに焦点を当てています)。

「教師ありフィルター」アルゴリズムの簡単な例は、ターゲット変数との相関に基づいて特徴を選択することです。 「逆方向選択」を使用すると、特徴を 1 つずつ削除して、それらの特徴がモデルの予測能力にどのような影響を与えるかを確認できます。

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

これまで、機能選択とハイパーパラメーター調整のためのライブラリを見てきましたが、なぜ両方を同時に使用しないのでしょうか?これがshape-hypetuneの役割です。

「SHAP」とは何かを理解することから始めましょう:

「SHAP (SHApley Additive exPlanations) は、機械学習モデルの出力を解釈するためのゲーム理論手法です。」

SHAP は、モデルを解釈するために最も広く使用されているライブラリの 1 つであり、モデルの最終予測に対する各特徴の重要性を生成することによって機能します。

一方、shap-hypertune は、最良の機能だけでなく、最良のハイパーパラメータも選択するこのアプローチの恩恵を受けます。なぜそれらを統合したいのですか?機能の選択とハイパーパラメーターの調整を個別に行うと、それらの相互作用が考慮されないため、最適とは言えない選択が生じる可能性があります。両方を同時に実行すると、これが考慮されるだけでなく、コーディング時間もいくらか節約されます (ただし、検索スペースの増加により実行時間が長くなる可能性があります)。

検索は、グリッド検索、ランダム検索、ベイジアン検索の 3 つの方法で実行できます (さらに、並列化も可能)。

ただし、shap-hypertune は勾配ブースティング モデルでのみ機能します。

4. PyCaret

PyCaret は、機械学習ワークフローを自動化できるオープンソースのローコード機械学習ライブラリです。探索的データ分析、前処理、モデリング (解釈可能性を含む)、および MLOps について説明します。

Web サイトで実際の例をいくつか見て、どのように機能するかを見てみましょう:

# 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 は、ストリーミング データ セットからサンキー図を生成できます。サンキー ダイアグラムが何なのかわからない場合は、次の例を参照してください。

データサイエンスの効率を向上させる 8 つの Python ライブラリ!

#サンキー ダイアグラムは、コンバージョン ファネル、マーケティング ジャーニー、または予算割り当てのデータを表示するときに非常に役立ちます (上記の例)。ポータル データは、「ソース x ターゲット x 値」の形式である必要があります。このようなプロットは、わずか 1 行のコードで作成できます (非常に具体的ですが、非常に直感的でもあります)。

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差不多了。

以上がデータサイエンスの効率を向上させる 8 つの Python ライブラリ!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。