發表文章

目前顯示的是 9月, 2021的文章

如何得到和 Anaconda 的 Jupyter Notebook 一樣的使用者體驗但卻不需安裝 Anaconda ?

圖片
 身為一個資料科學家或是機器學習工程師,Jupyter Notebook 是必不可少的好用工具,而 Anaconda 則是在入門這個領域的時候為了減少痛苦而安裝的一個龐大軟體。 但實際上大部分時候我們只需要 Anaconda 中的 Jupyter Notebook,而不是它內含的其他東西以及Python 環境選擇 (我不如用 pipenv...),若是你像我一樣希望捨棄笨重的 Anaconda,但又希望獲得同樣的體驗,而不是每次都要打開 terminal,輸入 Jupyter Notebook 才能打開的話,這篇會是一篇適合你閱讀的文章。 Anaconda 上的體驗是怎樣的? 若是以只使用 Jupyter Notebook 為前提的話,它主要的方便在於安裝 Anaconda 之後會自動產生一個 Jupyter Notebook 的捷徑在開始工具欄,當你需要使用的時候就直接點開就好。而不用打開 terminal 打字什麼的。 (我很在意這個所以一直被 Anaconda 綁架......)  除此之外,Anaconda 的 Jupyter Notebook 路徑是固定的,每次開啟都會在 username 那個資料夾裡面,所以我得因此被其綁架而得把所有資料和 Notebook 都放在那個資料夾裡面。 所以,接下來就要開始如何將 Jupyter Notebook 以一個有 icon 的桌面捷徑開啟而且還可以基於開啟的路徑而開啟的教學。 安裝 Jupyter Notebook pip install notebook 建立 Jupyter Notebook 捷徑 首先要在桌面上右鍵新增 -> 建立捷徑,然後在項目位置中打入  cmd /k "jupyter notebook" , 如下圖。 然後就將捷徑命名為 jupyter notebook,或是其他你喜歡的名字,像是 AI 煉蠱場之類的。 這串項目位置的意思是當點擊這個捷徑的時候會做兩個動作 :   1. 打開 cmd   2. 自動打入 jupyter notebook 改變 Jupyter Notebook Icon 這步很簡單,總之就是去下載 jupyter notebook 的 icon (記得轉成 .ico 檔名),然後儲存在電腦中的某一處。接下來只要右鍵點開 -> 內容

時間序列資料的交叉驗證方法 Cross Validation on Time Series data

圖片
最近接了一個跟時間序列資料預測有關的case,也因此開始惡補一些跟時間序列有關的知識。時間序列資料其實和正常的資料相比來說有許多不同的地方需要小心處理,其中一個我自己挺有印象的就是驗證方法上的不同,因此打算寫一篇 blog 來介紹幾個能夠在時間序列上使用的驗證方法。 為什麼正常的交叉驗證不可行? 這是因為正常的過程是基於 隨機 的切分資料,不論是 Boostrapping resampling, k-fold 或是 stratified k-fold 等等都一樣。想像如果你將一群有時間前後關係的資料打亂,可能會因為隨機性而拿未來的資料來預測過去,拿現在的資料預測過去,這在機器學習上完全不合理,因此我們必須用其他方法來避免掉這種 future-looking 的預測方式。 Walking Forward (Time Series Split ) Cross-Validation 既然我們只需要避免 future-looking,那麼我們的交叉驗證方法 只需要確保使用的訓練資料其時間是早於測試資料即可 。 舉一個例子來說,比如有一個時間序列資料集,照時間順序排列包含 [1, 2, 3, 4, 5] 第一個 iteration : Training: [1] , Test: [2] 第二個 iteration : Training: [1, 2], Test: [3] 第三個 iteration : Training: [1, 2, 3], Test: [4] 第四個 iteration : Training: [1, 2 ,3, 4], Test: [5] 最後將四個 fold 的模型表現平均起來就得到交叉驗證的最後結果 這種方法不僅能達成交叉驗證的核心思想,也就是要把所有資料都至少掃過一遍來驗證,以避免資料的偏誤。同時也比不使用交叉驗證,只將整個資料切成兩半,以時間較早的作為訓練,較晚的作為測試的方式都好很多。 除此之外也能夠在不同時間線上測試模型的表現有沒有不一樣,以便之後能夠對那個時間所發生的事件做深入分析。 實作上可以參考  sklearn.model_selection.TimeSeriesSplit Blocked Cross Validation 相較於 Walk Forward CV,Blocked CV 完全隔開了訓練資料以及測試資料的使用。 sour