1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 8166字,需瀏覽 17分鐘

         ·

        2022-08-01 09:05

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

        1、Optuna

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

        2、ITMO_FS

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

        3、shap-hypetune

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

        4、PyCaret

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

        5、floWeaver

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

        6、Gradio

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

        7、Terality

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

        8、torch-handle

        如果你是Pytorch的使用者,可以試試這個(gè)庫。
        torchhandle是一個(gè)PyTorch的輔助框架。它將PyTorch繁瑣和重復(fù)的訓(xùn)練代碼抽象出來,使得數(shù)據(jù)科學(xué)家們能夠?qū)⒕Ψ旁跀?shù)據(jù)處理、創(chuàng)建模型和參數(shù)優(yōu)化,而不是編寫重復(fù)的訓(xùn)練循環(huán)代碼。使用torchhandle,可以讓你的代碼更加簡潔易讀,讓你的開發(fā)任務(wù)更加高效。
        torchhandle將Pytorch的訓(xùn)練和推理過程進(jìn)行了抽象整理和提取,只要使用幾行代碼就可以實(shí)現(xiàn)PyTorch的深度學(xué)習(xí)管道。并可以生成完整訓(xùn)練報(bào)告,還可以集成tensorboard進(jìn)行可視化。
        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)
        定義一個(gè)模型,設(shè)置數(shù)據(jù)集,配置優(yōu)化器、損失函數(shù)就可以自動(dòng)訓(xùn)練了,是不是和TF差不多了。

        加入知識星球【我們談?wù)摂?shù)據(jù)科學(xué)】

        500+小伙伴一起學(xué)習(xí)!








        · 推薦閱讀 ·

        不只是快,詳解geopandas新版文件讀寫

        純Python開發(fā)在線GeoJSON數(shù)據(jù)生成器

        新一代Python包管理工具來了


        瀏覽 70
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            无码国产精品一区二区色情八戒 | 成人熟女视频一区二区三区 | 国产精品女A片爽视频爽 | 99做爱视频 | 蜜桃人妻无码AV天堂二区 | 免费看污污的网站 | 老司机精品免费视频 | 青青草视频一区二区 | 国产高清无码一区二区三区 | 日韩精品一区二区三区高清免费 |