DIY遠程Jupyter Notebook服務器

構建自己的遠程Jupyter Notebook服務器,添加system開機自啟,讓Jupyter Notebook支持跨網絡訪問的方法。 完全開放,不需密碼 1. 登陸遠程服務器 2.生成配置文件$jupyter notebook --generate-config 3. 修改默認配置文件$vim ~/.jupyter/jupyter_notebook_config.py進行如下修改: 1 2 c.NotebookApp.ip = c.NotebookApp.port = 4. 啟動jupyter notebook: jupyter notebook 5. 遠程訪問此時應該可以直接從本地瀏覽器直接訪問需要密碼 1. 生成密碼打開ipython,創建一個密文的密碼: 1 2 3…

0 Comments

Data Science Pipelines | 特徵工程中的管道

暫定為記錄各式數據科學項目、Kaggle競賽里面常用、有用的代碼片段、API、神操作等,通常是Numpy、Pandas、Matplotlib、Seaborn等相關,通常來說,項目基本步驟可以分為EDA、特徵工程以及調參。 基本流程以一個Kaggle上的House Price為案例,機器學習流程分成兩個大步驟:即EDA與特徵工程(只使用Pandas, StatsModel,scipy,numpy, seaborn等庫)輸入: 原始Train, Test 數據集,將原始Train和Test 合併成一個數據集combined處理: Pandas Pipe根據各種可能和各種特徵工程方法定義各種函數(輸入combined, 輸入pre_combined)用PandasPipe 將這個函數像搭積木一樣連在一起。用列表按序存放這些函數)這個列表就是,1. 基本的填充空值, 2. 轉換數據類型, 3. 空白函數(為了對齊美觀而以,啥事不做),4. log 轉換,類別數據啞元處理, 5. 導出到hdf5文件, 6.檢查R2值利用各種排列組合,或者各種參數組合,可以產生豐富的pipes,每一個pipes都可以產生一個預處理過的文件。輸出:某文件夾下的N個預處理過的hdf5文件。針對各種特徵工程的排列組合,或者是Kaggle上面的各種新奇的特徵工程方法。機器學習階段(訓練和產生模型,目標是盡可能獲得盡可能低的RMSE值(針對訓練數據),同時要具有範化的能力(針對測試數據))第一步,建立基準,篩選出最好的一個(幾個)預處理文件(隨機數設成固定值)第二步,針對篩選出來的預處理文件,進行調參。找到最合適的幾個算法(通常是RMSE值最低,且不同Kernel)(隨機數設成固定值)第三步,用調好的參數來預處理文件中的Traing數據的做average 和stacking第四部,生成csv文件,提交到Kaggle 看看得分如何。 準備階段與NoteBook Head過濾warning:有句話說的好,在計算機科學裡,我們只在意錯誤不在意warning 1 2 import…

0 Comments

處理大數據集的建議

最近的一些比賽如 1.及時刪除無用變量並垃圾回收通常我們在特徵工程中會涉及大量的轉換操作,產生很多的中間變量等,除了使用1 2 3 4 5 6 7 8 temp = pd.read_csv( #do something to the file temp[ #delete when no longer needed del #collect residual garbage gc.collect() 2.預定義數據類型pandas一般會自己推斷數據類型,不過傾向於使用耗費空間大的,如下面例子所示,預定義數據類型節省了超過一半的空間。 1…

0 Comments

如何理解Pandas 和Numpy裡的axis

簡述一種如何直觀的理解Pandas 和Numpy裡面的axis參數的方法。 Numpy 和Pandas裡的sort、mean、drop等操作,不是分行或者列分別用一個method來定義,而是一個method裡面用戶指定axis來操作的,舉例來說:我們先在如下是pandas裡按axis 0和1進行drop的操作示例,我們很容易看出,axis 0是按行drop,而axis 1是按列drop: 但是,mean操作呢? 容易看出,axis 0得出了每一列的均值,而axis 1得出了則是每一行的均值。那麼,在Numpy裡呢? 容易看出,axis為1的時候得出的是每行的sum,axis為0的時候得出了每列的sum。由上面的例子,我們似乎可以看出,axis為1代表水平方向上的操作,axis為0代表垂直方向上的操作,比如axis為1的sum得出的就是每一行的和。但是,在Pandas的Dataframe裡面,為什麼axis=1代表的是drop整個列呢?以下這個例子也可以說明一些情況: 聯繫這個視頻0 is the row axis, and 1 is the column axis. When you drop with axis=1, that means…

0 Comments

Pycharm 專業版

Pycharm,只為提高python開發者的生產力! 版本管理版本管理,主要是依靠這兩個按鈕,左邊是pull,右邊是commit。一般我們開發,打開項目,先pull下代碼倉庫的變更,開始開發,然後commit,再pull,合併衝突,再push。 pycharm非常人性化地為我們標出了,黑色則是沒有變更,藍色是有變更,綠色是新add的文件。 commit時,可以很方便地看出變更對比,對於需要回滾的零時操作文件可以用紫色的revert按鈕回退變更,總之填寫commit message之後就可以commit了。然後,為防止在此期間,代碼倉庫又有人push了新變更,在push之前,我們需要再次pull,如果沒有變更,push即可。 如果有衝突呢,pycharm有非常human的解決衝突界面,總之,選擇修改的、丟棄的、保留的,就可以push了,當然,這次push會有兩條message,第二條是解決衝突的。 遠程調試利用pycharm我們可以在服務器直接run、debug,非常的便捷。首先要設置deployment, 選擇SFTP,也就是ssh,這裡用密碼或者私鑰都是ok的。設置好映射目錄, 接下來添加遠程解釋器, ,並勾選auto upload, 那麼,每次本地的更改都會同步到服務器,直接run或者debug都是獲取服務器的結果,非常方便。 DEBUG DEBUG可謂是開發中最最重要的技能了,也許我們在初級的開發的時候,還可以依靠各種print變量來查看,那麼工程一旦變複雜,debug就必不可少了,;舉個栗子,我們用TensorFlow寫深度學習工程的時候,如果出現矩陣維度不匹配的情況,這個時候用debug去觀察各個維度就相當高效了。以下圖為例,我們做debug,當然先要在我們希望觀察的代碼處打斷點(Break Point),就是左邊的紅色小點,第一個斷點debug停下來的地方。接下來就是debug按鈕了,也就是紅框內的這些箭頭,依次是Step Over 直接從當前斷點步進到下一個斷點,也就是我們不希望看到中間的任何調用,直接跳過Step Into,從當前斷點,每一次調用都進入,如果調用比較多,可能很繁因為會一步步深入Step Into Mycode,簡單明了,一行一行的步進,不跳轉到調用Force Step Into,強制步進進入Step Out 跳出當前調用,和Step Into結合,一個進入、一個跳出Run to Cursor 不需打斷點,直接步進到光標所在處,這個也很方便,只需把光標放在某處點擊即可此處類似堆棧,後面調用的進程在上面。 當然,最主要的,上面這些步驟按鈕的最終目的就是觀察Variable的變化,通過步進觀察各個變量的信息,以找出bug等等。 Python…

0 Comments

使用supervisor支持Python3程序

Supervisor目前Supervisor還不支持python3,那麼怎麼利用Supervisor監控python3程序呢?本文主要講述Supervisor在Ubuntu下的安裝部署以及上述問題的解決。 安裝及設置可通過pip安裝,如果你已經是python3的pip,會安裝失敗,那麼可以用運行1 2 3 4 5 6 [unix_http_server] file=/tmp/supervisor.sock ; (the path to the socket file) chmod=0766 ; socket file mode (default 0700) ;chown=nobody:nogroup ; socket file uid:gid owner ;username=user…

0 Comments