日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

编写一个watchdog.sh脚本_五大原因!为何要将Jupyter Notebook转换为python脚本?

發布時間:2023/12/2 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编写一个watchdog.sh脚本_五大原因!为何要将Jupyter Notebook转换为python脚本? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

全文共3360字,預計學習時長9分鐘

圖源:unsplash

大多數數據科學在線課程都把Jupyter Notebook作為教學媒介,這是因為初學者在Jupyter Notebook的單元格中編寫代碼,比編寫包含類和函數的腳本更容易。

另一個原因在于它使瀏覽和繪制數據變得容易。鍵入"Shift + Enter"時,你可以立即看到代碼的結果,這使我們能夠輕松地確定代碼是否有效。

然而,當處理更多數據科學項目時,Jupyter Notebook也存在幾個缺點:

· 缺乏條理性:隨著代碼變大,我們所編寫的東西越來越難以跟蹤。無論使用多少標記將Notebook分隔成不同的部分,斷開連接的單元格都使用戶難以專注于代碼功能。

· 難以試驗:你需要使用不同的數據處理方法進行測試,為機器學習算法選擇不同的參數,查看準確性是否提高。但每次試驗新方法時,都需要查找和重新運行相關單元格,這耗神耗時,尤其是處理或培訓過程需要很長時間才能運行時。

· 可重復性低:如果你想要使用結構略有不同的新數據,識別其中的錯誤源很難。

· 難以調試:當你在代碼中收到錯誤時,無法準確判斷出錯的原因,是代碼還是數據更改?如果是代碼出錯,具體是哪個部分?

· 不適合生產:Jupyter Notebook與其他工具配合使用效果不佳。使用其他工具時,從Jupyter Notebook運行代碼并不容易。

圖源:unsplash

一定有更好的方法來處理代碼,所以我決定嘗試一下腳本。為了減少混淆,引用.py文件時,在本文中使用單詞"腳本"。

組織

Jupyter Notebook中的單元格很難將代碼組織成不同的部分。使用腳本可以創建幾個小函數,每個函數指定代碼的功能。

更妙的是,如果這些函數可以分類在同類別,如處理數據的函數時,可以將它們放在同一個類中。

每當我們想要處理數據時,就可以利用類預處理中的函數。

鼓勵實驗

當我們想要嘗試對預處理數據的不同方法時,只需添加或刪除函數,這樣注釋不用害怕破壞代碼。即使碰巧破壞了代碼,也能確切地知道在哪里修復。

提高重復性

使用類和函數,可以使代碼足夠通用,以便能夠和其他數據一起使用。例如,如果我們想在新數據中刪除不同的列,只需將columns_to_drop更改為列的列表,若是刪除,代碼也將順利運行。

columns_to_drop =config.columns.to_dropdatetime_column =config.columns.datetime.sentimentdropna_columns =config.columns.drop_naprocessor =Preprocess(columns_to_drop,datetime_column, dropna_columns)

還可以創建一個管道來指定處理和訓練數據的步驟。一旦擁有管道,我們所需要做的就是使用它對列車和測試數據應用相同的處理。

pipline.fit_transform(data)

易于調試

使用函數可以更容易地測試該函數是否產生期望的輸出,我們可以快速地指出代碼中的哪些地方需要更改以生成想要的輸出。

defextract_date_hour_minute(string: str):'''Extract datahour and minute from datetime string'''try:return string[:16]exceptTypeError: return np.nandeftest_extract_date_hour_minute(): '''Test whether the function extractdate, hour, and minute '''string ='2020-07-30T23:25:31.036+03:00'assertextract_date_hour_minute(string) =='2020-07-30T23:25'

如果所有測試都通過了,但是在運行代碼時仍然存在錯誤,那么我們就知道接下來應該查看這些數據。例如,在通過上面的測試后,在運行腳本時仍然有一個類型錯誤,這使數據中有空值。那就只需要處理這個問題,就可以平穩運行代碼。

適于生產

在多個腳本中使用不同的函數:

from preprocess import preprocessfrom model import run_modelfrom predict import predictdefmain(config): df =preprocess(config) df =run_model(config) df, df_scale, min_day, max_day, accuracy =predict(df, config)

或者添加配置文件來控制變量的值。這可以讓我們不必浪費時間去跟蹤代碼中的特定變量來更改其值。

columns:to_drop:#- keywords #- entities - code - error - warnings binary_columns:- sentiment - Diff datetime:time: Datesentiment: crawleddrop_na:- sentiment - usage - crawled - emotion to_predict: sentiment

你還可以輕松地添加工具來跟蹤實驗,比如MLFlow,或者添加工具來處理配置,比如http://Hydra.cc。

圖源:unsplash

不喜歡Jupyter Notebook,直到迫使自己做出調整

我以前一直使用Jupyter Notebook。當一些數據科學家建議將Notebook筆記本換成腳本從而避免上述一些問題時,我不理解也不愿意這么做,因為我不喜歡運行單元格時無法看到這種不確定性。

但是,當我在新公司開始第一個真正的數據科學項目時,Jupyter Notebook的缺點越來越大,所以我決定踏出舒適區,用腳本進行實驗。

起初,我很不習慣,但也注意到了使用腳本的好處。當代碼被組織成不同的函數、類和等多個腳本(每個腳本都用于不同的目的,如預處理、培訓和測試)時,我開始感到工作更有條理性。

我在建議讀者不要用Jupyter Notebook?

并不是。如果代碼比較小,且不打算將代碼投入生產,仍然可以使用Jupyter Notebook。當想要分析、可視化數據時,也可以使用Jupyter Notebook。還可以用它來解釋如何使用一些python庫。例如,Khuyen Tran主要使用這個存儲庫中的Jupyter Notebook作為媒介來解釋他所有文章中提到的代碼。

如果你不習慣在腳本中編寫所有內容,那么你可以將腳本和Jupyter Notebook用于不同的目的。例如,可以在腳本中創建類和函數,然后將它們導入到Notebook中,這樣就不那么凌亂了。

另一種方法是在寫完筆記本后把它變成腳本,但組織筆記本中的代碼(比如把它們放到函數和類中以及編寫測試函數)通常要花費更長的時間。你可以先寫一個小的函數,再寫一個小的測試函數,可以更快更安全。如果正好想用新的Python庫加速代碼,可以使用已經編寫的測試函數來確保它如期望中那樣工作。

圖源:unsplash

除了本文中提到的方法,一定有更多的方法可以解決Jupyter Notebook的缺點。

每個人都有自己提高工作利率的方法。剛從Jupyter Notebook切換到腳本可能不太習慣,因為用腳本編寫代碼不太直觀,但你最終會習慣的。你會開始意識到腳本在凌亂的Jupyter Notebook上有著許多好處,并且會希望用腳本編寫大部分代碼。

不積跬步無以至千里,從細微處開始改變自己吧。

留言點贊關注

我們一起分享AI學習與發展的干貨

編譯組:符馨元、何婧璇

相關鏈接:https://towardsdatascience.com/5-reasons-why-you-should-switch-from-jupyter-notebook-to-scripts-cb3535ba9c95

如轉載,請私信小芯,遵守轉載規范

總結

以上是生活随笔為你收集整理的编写一个watchdog.sh脚本_五大原因!为何要将Jupyter Notebook转换为python脚本?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。