Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Lapan perpustakaan Python yang boleh meningkatkan produktiviti sains data anda dan menjimatkan masa yang berharga

Lapan perpustakaan Python yang boleh meningkatkan produktiviti sains data anda dan menjimatkan masa yang berharga

PHPz
PHPzke hadapan
2023-04-12 17:01:191184semak imbas

Apabila melakukan sains data, anda boleh membuang banyak masa pengekodan dan menunggu komputer anda menjalankan sesuatu. Jadi saya telah memilih beberapa perpustakaan Python yang boleh membantu anda menjimatkan masa berharga anda.

1. Optuna

Optuna ialah rangka kerja pengoptimuman hiperparameter sumber terbuka yang boleh mencari hiperparameter terbaik untuk model pembelajaran mesin secara automatik.

Alternatif paling asas (dan mungkin terkenal) ialah GridSearchCV sklearn, yang akan mencuba gabungan hiperparameter berbilang dan memilih yang terbaik berdasarkan pengesahan silang.

GridSearchCV akan mencuba gabungan dalam ruang yang ditentukan sebelum ini. Sebagai contoh, untuk pengelas hutan rawak, anda mungkin mahu menguji kedalaman maksimum beberapa pokok yang berbeza. GridSearchCV menyediakan semua nilai yang mungkin untuk setiap hiperparameter dan melihat semua kombinasi.

Optuna menggunakan sejarah percubaannya sendiri dalam ruang carian yang ditentukan untuk menentukan nilai yang hendak dicuba seterusnya. Kaedah yang digunakan ialah algoritma pengoptimuman Bayesian yang dipanggil "Penanggaran Parzen Berstruktur Pokok".

Pendekatan berbeza ini bermakna bahawa bukannya mencuba setiap nilai secara sia-sia, ia mencari calon terbaik sebelum mencubanya, menjimatkan masa yang sebaliknya akan dibelanjakan untuk mencuba alternatif tanpa harapan (dan mungkin juga membuahkan hasil yang lebih baik).

Akhir sekali, ia adalah rangka kerja agnostik, yang bermaksud anda boleh menggunakannya dengan TensorFlow, Keras, PyTorch atau mana-mana rangka kerja ML yang lain.

2. ITMO_FS

ITMO_FS ialah perpustakaan pemilihan ciri yang boleh melakukan pemilihan ciri untuk model ML. Semakin sedikit pemerhatian yang anda miliki, semakin berhati-hati anda perlu menggunakan terlalu banyak ciri untuk mengelak daripada pemasangan berlebihan. Dengan "berhemat" saya maksudkan anda harus menyeragamkan model anda. Biasanya model yang lebih ringkas (ciri yang lebih sedikit) lebih mudah difahami dan ditafsir.

Algoritma ITMO_FS dibahagikan kepada 6 kategori berbeza: penapis diselia, penapis tidak diselia, pembalut, kacukan, terbenam, ensembel (walaupun ia tertumpu terutamanya pada penapis diselia).

Contoh mudah algoritma "penapis diselia" adalah untuk memilih ciri berdasarkan korelasinya dengan pembolehubah sasaran. Dengan "pemilihan ke belakang", anda boleh cuba mengalih keluar ciri satu demi satu dan mengesahkan cara ciri ini mempengaruhi keupayaan ramalan model.

Berikut ialah contoh remeh tentang cara menggunakan ITMO_FS dan kesannya pada skor model:

>>> 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 ialah perpustakaan yang agak baharu, jadi ia masih agak tidak stabil, tetapi saya masih mengesyorkan agar anda memberi ia satu percubaan.

3. shap-hypetune

Setakat ini kami telah melihat perpustakaan untuk pemilihan ciri dan penalaan hiperparameter, tetapi mengapa tidak menggunakan kedua-duanya pada masa yang sama Ini adalah peranan shap-hypetune.

Mari kita mulakan dengan memahami apa itu “SHAP”:

“SHAP (SHapley Additive exPlanations) ialah kaedah teori permainan untuk mentafsir output mana-mana model pembelajaran mesin.”

SHAP ialah salah satu perpustakaan yang paling banyak digunakan untuk mentafsir model, ia berfungsi dengan menjana kepentingan setiap ciri kepada ramalan akhir model.

Sebaliknya, shap-hypertune mendapat manfaat daripada pendekatan ini untuk memilih ciri terbaik tetapi juga hiperparameter terbaik. Mengapa anda ingin menggabungkannya bersama-sama Memilih ciri dan menala hiperparameter secara bebas boleh membawa kepada pilihan suboptimum kerana tanpa mengambil kira interaksi antara mereka. Melakukan kedua-duanya pada masa yang sama bukan sahaja mengambil kira perkara ini, tetapi juga menjimatkan masa pengekodan (walaupun masa jalan mungkin meningkat disebabkan ruang carian yang meningkat).

Carian boleh dilakukan dalam 3 cara: carian grid, carian rawak atau carian Bayesian (tambahan, ia boleh disejajarkan).

Walau bagaimanapun, shap-hypertune hanya berfungsi dengan model penggalak kecerunan!

4. PyCaret

PyCaret ialah perpustakaan pembelajaran mesin kod rendah sumber terbuka yang mengautomasikan Aliran Kerja pembelajaran mesin. . Ia meliputi analisis data penerokaan, prapemprosesan, pemodelan (termasuk kebolehtafsiran), dan MLOps.

Mari kita lihat beberapa contoh praktikal di tapak web mereka untuk melihat cara ia berfungsi:

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

Lapan perpustakaan Python yang boleh meningkatkan produktiviti sains data anda dan menjimatkan masa yang berharga

Dengan hanya beberapa baris kod, Anda boleh mencuba berbilang model dan membandingkannya merentas metrik klasifikasi utama.

Ia juga membenarkan penciptaan aplikasi asas untuk berinteraksi dengan model:

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)

Akhir sekali, fail API dan Docker boleh dibuat dengan mudah untuk model:

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')

Ia tidak menjadi lebih mudah daripada ini, bukan?

PyCaret ialah perpustakaan yang sangat lengkap dan sukar untuk merangkumi segala-galanya di sini, saya cadangkan anda memuat turunnya sekarang dan mula menggunakannya untuk mempelajari sedikit sebanyak tentang cara ia berfungsi dalam keupayaan amalan.

5. floWeaver

FloWeaver boleh menjana gambar rajah Sankey daripada set data penstriman. Jika anda tidak tahu apa itu gambar rajah Sankey, berikut ialah contoh:

Lapan perpustakaan Python yang boleh meningkatkan produktiviti sains data anda dan menjimatkan masa yang berharga

Ia sangat berguna apabila menunjukkan data untuk corong penukaran, perjalanan pemasaran atau peruntukan belanjawan (contoh di atas). Data portal hendaklah dalam format berikut: "sumber x sasaran x nilai" Ia hanya memerlukan satu baris kod untuk mencipta plot sedemikian (sangat khusus, tetapi juga sangat intuitif).

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

Atas ialah kandungan terperinci Lapan perpustakaan Python yang boleh meningkatkan produktiviti sains data anda dan menjimatkan masa yang berharga. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam