<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          提高數(shù)據(jù)科學效率的 8 個Python神庫!

          共 8120字,需瀏覽 17分鐘

           ·

          2022-07-31 03:00

          來源丨數(shù)據(jù)STUDIO
          在進行數(shù)據(jù)科學時,可能會浪費大量時間編碼并等待計算機運行某些東西。所以我選擇了一些 Python 庫,可以幫助你節(jié)省寶貴的時間。

          1、Optuna

          Optuna 是一個開源的超參數(shù)優(yōu)化框架,它可以自動為機器學習模型找到最佳超參數(shù)。
          最基本的(也可能是眾所周知的)替代方案是 sklearn 的 GridSearchCV,它將嘗試多種超參數(shù)組合并根據(jù)交叉驗證選擇最佳組合。
          GridSearchCV 將在先前定義的空間內(nèi)嘗試組合。例如,對于隨機森林分類器,可能想要測試幾個不同的樹的最大深度。GridSearchCV 會提供每個超參數(shù)的所有可能值,并查看所有組合。
          Optuna會在定義的搜索空間中使用自己嘗試的歷史來確定接下來要嘗試的值。它使用的方法是一種稱為“Tree-structured Parzen Estimator”的貝葉斯優(yōu)化算法。
          這種不同的方法意味著它不是無意義的地嘗試每一個值,而是在嘗試之前尋找最佳候選者,這樣可以節(jié)省時間,否則這些時間會花在嘗試沒有希望的替代品上(并且可能也會產(chǎn)生更好的結(jié)果)。
          最后,它與框架無關(guān),這意味著您可以將它與 TensorFlow、Keras、PyTorch 或任何其他 ML 框架一起使用。

          2、ITMO_FS

          ITMO_FS 是一個特征選擇庫,它可以為 ML 模型進行特征選擇。擁有的觀察值越少,就越需要謹慎處理過多的特征,以避免過度擬合。所謂“謹慎”意思是應(yīng)該規(guī)范你的模型。通常一個更簡單的模型(更少的特征),更容易理解和解釋。
          ITMO_FS 算法分為 6 個不同的類別:監(jiān)督過濾器、無監(jiān)督過濾器、包裝器、混合、嵌入式、集成(盡管它主要關(guān)注監(jiān)督過濾器)。
          “監(jiān)督過濾器”算法的一個簡單示例是根據(jù)特征與目標變量的相關(guān)性來選擇特征。“backward selection”,可以嘗試逐個刪除特征,并確認這些特征如何影響模型預測能力。
          這是一個關(guān)于如何使用 ITMO_FS 及其對模型分數(shù)的影響的普通示例:
          >>> 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是一個相對較新的庫,因此它仍然有點不穩(wěn)定,但我仍然建議嘗試一下。

          3、shap-hypetune

          到目前為止,我們已經(jīng)看到了用于特征選擇和超參數(shù)調(diào)整的庫,但為什么不能同時使用兩者呢?這就是 shap-hypetune 的作用。
          讓我們從了解什么是“SHAP”開始:
          “SHAP(SHapley Additive exPlanations)是一種博弈論方法,用于解釋任何機器學習模型的輸出。”
          SHAP 是用于解釋模型的最廣泛使用的庫之一,它通過產(chǎn)生每個特征對模型最終預測的重要性來工作。
          另一方面,shap-hypertune 受益于這種方法來選擇最佳特征,同時也選擇最佳超參數(shù)。你為什么要合并在一起?因為沒有考慮它們之間的相互作用,獨立地選擇特征和調(diào)整超參數(shù)可能會導致次優(yōu)選擇。同時執(zhí)行這兩項不僅考慮到了這一點,而且還節(jié)省了一些編碼時間(盡管由于搜索空間的增加可能會增加運行時間)。
          搜索可以通過 3 種方式完成:網(wǎng)格搜索、隨機搜索或貝葉斯搜索(另外,它可以并行化)。
          但是,shap-hypertune 僅適用于梯度提升模型!

          4、PyCaret

          PyCaret 是一個開源、低代碼的機器學習庫,可自動執(zhí)行機器學習工作流。它涵蓋探索性數(shù)據(jù)分析、預處理、建模(包括可解釋性)和 MLOps。
          讓我們看看他們網(wǎng)站上的一些實際示例,看看它是如何工作的:
          # 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()
          只需幾行代碼,就可以嘗試多個模型,并在整個主要分類指標中對它們進行了比較。
          它還允許創(chuàng)建一個基本的應(yīng)用程序來與模型進行交互:
          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)
          最后,可以輕松地為模型創(chuàng)建 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是一個非常完整的庫,在這里很難涵蓋所有內(nèi)容,建議你現(xiàn)在下載并開始使用它來了解一些 其在實踐中的能力。

          5、floWeaver

          FloWeaver 可以從流數(shù)據(jù)集中生成桑基圖。如果你不知道什么是桑基圖,這里有一個例子:
          在顯示轉(zhuǎn)化漏斗、營銷旅程或預算分配的數(shù)據(jù)時,它們非常有用(上例)。入口數(shù)據(jù)應(yīng)采用以下格式:“源 x 目標 x 值”,只需一行代碼即可創(chuàng)建此類圖(非常具體,但也非常直觀)。

          6、Gradio

          如果你閱讀過敏捷數(shù)據(jù)科學,就會知道擁有一個讓最終用戶從項目開始就與數(shù)據(jù)進行交互的前端界面是多么有幫助。一般情況下在Python中最常用是 Flask,但它對初學者不太友好,它需要多個文件和一些 html、css 等知識。
          Gradio 允許您通過設(shè)置輸入類型(文本、復選框等)、功能和輸出來創(chuàng)建簡單的界面。盡管它似乎不如 Flask 可定制,但它更直觀。
          由于 Gradio 現(xiàn)在已經(jīng)加入 Huggingface,可以在互聯(lián)網(wǎng)上永久托管 Gradio 模型,而且是免費的!

          7、Terality

          理解 Terality 的最佳方式是將其視為“Pandas ,但速度更快”。這并不意味著完全替換 pandas 并且必須重新學習如何使用df:Terality 與 Pandas 具有完全相同的語法。實際上,他們甚至建議“import Terality as pd”,并繼續(xù)按照以前的習慣的方式進行編碼。
          它快多少?他們的網(wǎng)站有時會說它快 30 倍,有時快 10 到 100 倍。
          另一個重要是 Terality 允許并行化并且它不在本地運行,這意味著您的 8GB RAM 筆記本電腦將不會再出現(xiàn) MemoryErrors!
          但它在背后是如何運作的呢?理解 Terality 的一個很好的比喻是可以認為他們在本地使用的 Pandas 兼容的語法并編譯成 Spark 的計算操作,使用Spark進行后端的計算。所以計算不是在本地運行,而是將計算任務(wù)提交到了他們的平臺上。
          那有什么問題呢?每月最多只能免費處理 1TB 的數(shù)據(jù)。如果需要更多則必須每月至少支付 49 美元。1TB/月對于測試工具和個人項目可能綽綽有余,但如果你需要它來實際公司使用,肯定是要付費的。

          8、torch-handle

          如果你是Pytorch的使用者,可以試試這個庫。
          torchhandle是一個PyTorch的輔助框架。它將PyTorch繁瑣和重復的訓練代碼抽象出來,使得數(shù)據(jù)科學家們能夠?qū)⒕Ψ旁跀?shù)據(jù)處理、創(chuàng)建模型和參數(shù)優(yōu)化,而不是編寫重復的訓練循環(huán)代碼。使用torchhandle,可以讓你的代碼更加簡潔易讀,讓你的開發(fā)任務(wù)更加高效。
          torchhandle將Pytorch的訓練和推理過程進行了抽象整理和提取,只要使用幾行代碼就可以實現(xiàn)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(1020)), 
                      ('a1', torch.nn.ReLU()), 
                      ('l2', torch.nn.Linear(2010)), 
                      ('a2', torch.nn.ReLU()), 
                      ('l3', torch.nn.Linear(101)) 
                  ])) 
           
              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)
          定義一個模型,設(shè)置數(shù)據(jù)集,配置優(yōu)化器、損失函數(shù)就可以自動訓練了,是不是和TF差不多了。
          END -
          對比Excel系列圖書累積銷量達15w冊,讓你輕松掌握數(shù)據(jù)分析技能,可以點擊下方鏈接進行了解選購

          瀏覽 37
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  性久久久久久久久久 | 2017AV天堂网 | aaaaaa免费 | 精品久久久无码人妻中文字幕边打 | 一级a一级a爰片免费免 |