蘿卜大雜燴 | 提高數據科學工作效率的 8 個 Python 庫

本文來源公眾號“蘿卜大雜燴”,僅用于學術分享,侵權刪,干貨滿滿。

原文鏈接:提高數據科學工作效率的 8 個 Python 庫

在進行數據科學時,可能會浪費大量時間編碼并等待計算機運行某些東西。所以我選擇了一些 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 個不同的類別:監督過濾器、無監督過濾器、包裝器、混合、嵌入式、集成(盡管它主要關注監督過濾器)

“監督過濾器”算法的一個簡單示例是根據特征與目標變量的相關性來選擇特征。“backward selection”,可以嘗試逐個刪除特征,并確認這些特征如何影響模型預測能力。

這是一個關于如何使用 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-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()

只需幾行代碼,就可以嘗試多個模型,并在整個主要分類指標中對它們進行了比較。

它還允許創建一個基本的應用程序來與模型進行交互

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 可以從流數據集中生成桑基圖。如果你不知道什么是桑基圖,這里有一個例子:

在顯示轉化漏斗、營銷旅程或預算分配的數據時,它們非常有用(上例)。入口數據應采用以下格式:“源 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?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差不多了。

THE END!

文章結束,感謝閱讀。您的點贊,收藏,評論是我繼續更新的動力。大家有推薦的公眾號可以評論區留言,共同學習,一起進步。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716127.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716127.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716127.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3中的Hooks詳解

vue3帶來了Composition API,其中Hooks是其重要組成部分。之前我寫過一篇關于vue3 hooks的文章比較簡單 Vue3從入門到刪庫 第十一章(自定義hooks) 所以本文將深入探討Vue3中Hooks,幫助你在Vue3開發中更加得心應手。 一、Vue3 Hoo…

貪吃蛇(C語言)步驟講解

一:文章大概 使用C語言在windows環境的控制臺中模擬實現經典小游戲 實現基本功能: 1.貪吃蛇地圖繪制 2.蛇吃食物的功能(上,下,左,右方向控制蛇的動作) 3.蛇撞墻死亡 4.計算得分 5.蛇身加…

[C語言]——C語言常見概念(1)

目錄 一.C語言是什么、 二.C語言的歷史和輝煌 三.編譯器的選擇(VS2022為例) 1.編譯和鏈接 2.編譯器的對比 3.VS2022 的優缺點 四.VS項目和源文件、頭文件介紹 五.第?個C語言程序 ??????? 一.C語言是什么、 ?和?交流使?的是?然語?&…

【python】爬取鏈家二手房數據做數據分析【附源碼】

一、前言、 在數據分析和挖掘領域中,網絡爬蟲是一種常見的工具,用于從網頁上收集數據。本文將介紹如何使用 Python 編寫簡單的網絡爬蟲程序,從鏈家網上海二手房頁面獲取房屋信息,并將數據保存到 Excel 文件中。 二、效果圖&#…

【JS】解構賦值注意點,解構賦值報錯

報錯代碼 const 小明 { email: 6, pwd: 66 } const 小剛 { email: 9, pwd: 99 }const { email } 小明 const { email } 小剛 報錯圖 原因 2個常量重復,重復在同一個作用域內是不能重復的,例如大括號內{const a 1; const a 2} 小伙伴A提問 問&…

Redis-基礎篇

Redis是一個開源、高性能、內存鍵值存儲數據庫,由 Salvatore Sanfilippo(網名antirez)創建,并在BSD許可下發布。它不僅可以用作緩存系統來加速數據訪問,還可以作為持久化的主數據存儲系統或消息中間件使用。Redis因其數…

leetcode:37.解數獨

題目理解:本題中棋盤的每一個位置都要放一個數字(而N皇后是一行只放一個皇后),并檢查數字是否合法,解數獨的樹形結構要比N皇后更寬更深。 代碼實現:

SpringBoot+Redis 解決海量重復提交問題,yyds!

在實際的開發項目中,一個對外暴露的接口往往會面臨很多次請求,我們來解釋一下冪等的概念:任意多次執行所產生的影響均與一次執行的影響相同。按照這個含義,最終的含義就是 對數據庫的影響只能是一次性的,不能重復處理。如何保證其…

?動類型轉換、強制類型轉換

為何short s1 1;是對的,而float f3.4;是錯的? 整數直接量,默認是int型。所以int a 4L; 會報錯,但是long l 4; 這樣不會,因為這樣會形成一個自動類型的轉換,int類型自動轉換為long類型 小數直接量&#…

JetBrains Gateway Github Copilot 客戶端插件和主機插件

JetBrains Gateway可以通過插件支持Github Copilot(需另行注冊)。 需要安裝插件 客戶端,而非插件 主機,如圖所示: 大概是因為代碼顯示在客戶端(運行在本地的IDE)?

NOC2023軟件創意編程(學而思賽道)python初中組復賽真題

目錄 下載打印原文檔做題: 軟件創意編程 一、參賽范圍 1.參賽組別:小學低年級組(1-3 年級)、小學高年級組(4-6 年級)、初中組。 2.參賽人數:1 人。 3.指導教師:1 人(可空缺)。 4.每人限參加 1 個賽項。 組別確定:以地方教育行政主管部門(教委、教育廳、教育局) 認…

Python 潮流周刊#40:白宮建議使用 Python 等內存安全的語言

△△請給“Python貓”加星標 ,以免錯過文章推送 你好,我是貓哥。這里每周分享優質的 Python、AI 及通用技術內容,大部分為英文。本周刊開源,歡迎投稿[1]。另有電報頻道[2]作為副刊,補充發布更加豐富的資訊,…

三層靶機靶場之環境搭建

下載: 鏈接:百度網盤 請輸入提取碼 提取碼:f4as 簡介 2019某CTF線下賽真題內網結合WEB攻防題庫,涉 及WEB攻擊,內網代理路由等技術,每臺服務器存在一個 Flag,獲取每一 個Flag對應一個積分&…

在docker中搭建selenium 爬蟲環境(3分鐘快速搭建)

1、安裝docker 省略 2、拉取鏡像 docker pull selenium/standalone-chrome-debug 3、運行容器 docker run -d -p 4444:4444 -p 5900:5900 -v C:\Users\Public\VNC_Donwnloads:/home/seluser/Downloads --memory6g --name selenium_chrome selenium/standalone-chrome-debu…

Vue中commit和dispatch區別及其用法辨析

在Vue中,commit和dispatch是兩個用于觸發 Vuex store 中的 mutations 和 actions 的方法。 區別 commit: 用于觸發 mutations,即直接修改 state 的同步操作。通過commit方法可以調用 store 中的 mutations,并且只能同步地執行。使用方式如下…

大數據核心技術概論

大數據核心技術概述 大數據基石三大論文:GFS(Hadoop HDFS)、BigTable(Apache HBase)、MapReduce(Hadoop MapReduce)。 搜索引擎的核心任務:一是數據采集,也就是網頁的爬…

matlab 感知器算法

1. 原理 兩類線性可分的模式類:,設判別函數為:。 對樣本進行規范化處理,即類樣本全部乘以(-1),則有: 感知器算法通過對已知類別的訓練樣本集的學習,尋找一個滿足上式的權向量。 2. 過程 2.1 …

力扣 分割回文串

輸出的是不同的分割方案 class Solution { public:vector<vector<bool>>flag;vector<string>ans;vector<vector<string>>nums;void dfs(string &s,int i){int ns.size();if(in){i表示s長度&#xff0c;等于即全部分割完畢nums.push_back(ans…

第十三篇【傳奇開心果系列】Python的文本和語音相互轉換庫技術點案例示例:Microsoft Azure的Face API開發人臉識別門禁系統經典案例

傳奇開心果博文系列 系列博文目錄Python的文本和語音相互轉換庫技術點案例示例系列 博文目錄前言一、實現步驟和雛形示例代碼二、擴展思路介紹三、活體檢測深度解讀和示例代碼四、人臉注冊和管理示例代碼五、實時監控和報警示例代碼六、多因素認證示例代碼七、訪客管理示例代碼…

mac m3安裝nvm安裝說明;mac安裝xbrew

安裝說明說明&#xff1a; 1.安裝brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2.安裝nvm brew install nvm3.創建.nvm目錄 mkdir ~/.nvm4.編輯 ~/.zshrc 配置文件 vi ~/.zshrc5.在 ~/.zshrc 配置文件內添加內…