1. 程式人生 > >Fast AI ML Note

Fast AI ML Note

github repo:https://github.com/fastai/fastai/tree/master/courses/ml1
視訊連結:https://www.bilibili.com/video/av23356580

Fast AI依賴庫的安裝:

conda install bcolz
conda install tqdm
pip install graphviz
pip install sklearn_pandas
pip install isoweek
pip install pandas_summary
pip install -U feather-format

注意graphviz庫的安裝需要參考

http://www.cnblogs.com/onemorepoint/p/8310996.html
(因為我是先pip install graphviz,然後發現仍然報錯,才去下載安裝包安裝的)

Lesson1

08:17
在notebook開始處寫下如下程式碼

%load_ext autoreload
%autoreload 2

%matplotlib inline

能夠為後續的restart提供便利(暫時體會不到)

11:00
檢視display函式的文件

?display

檢視display函式的原始碼

??display

17:00
在遠端伺服器上下載kaggle資料,使用FireFox瀏覽器,選擇Copy as cURL

,去掉文字中的--2.0,並在末尾加上-o bulldozers.zip

21:40
可以使用Jupyter Notebook建立一個遠端控制檯

22:50

mkdir bulldozer
cd !$

其中!$表示上一條命令的最後一個word

24:00
在Jupyter Notebook中使用Shell

!ls {PATH}

其中{PATH}表示使用定義的PATH變數

29:20

name = 'Jeremy'
f'Hello {name}'
f'Hello {name.upper()}'

pd.read_csv函式,low_memory預設為True

32:55
target variable也稱為dependent variable

46:00
Shift+Tab可以快速檢視某個函式的介紹
可以Shift+Tab一次,兩次,三次

51:00
使用Fast AI內建的add_datepart函式來提取日期特徵,其中利用getattr函式獲取datetime物件的各種屬性

57:30
使用train_cats函式,將訓練集中的字串轉換為數字
使用apply_cats函式,將測試集中的字串轉換為數字
只是儲存了額外的資訊,並沒有對DataFrame本身進行修改

65:30
pd.to_feather儲存為feather格式,這是一種全新的也是最快的儲存格式

68:00
使用proc_df函式,對DataFrame本身進行修改

Lessson2

12:00
從公式上解釋 R 2 R^2 score
R 2 R^2 score為0時,表示均值模型
R 2 R^2 score小於0時,表示模型比均值模型還差
R 2 R^2 score等於1時,表示模型完美擬合

68:00
對於RandomForest,如何判斷n_estimators設定得足夠多了?
答案是畫出一個In [59]那樣的圖,當performance變得平坦時,說明estimator數量已經足夠了

70:10
在訓練樣本數量較少,無法劃分出驗證集時,使用oob_score=True,檢視model.oob_score_

76:05
set_rf_samples似乎從底層修改了RandomForest的取樣方式
fit時仍然傳入完整的訓練集,在訓練過程中自動完成取樣
reset_tf_samples,fit時使用完整的訓練集

80:40
因為該資料集樣本數量足夠多,跑一次RF花的時間較長,而且由於RF預設引數為每個葉節點僅包含一個樣本,故在所有樣本上學習出來的RF一定是過擬合的,因此對訓練集進行取樣,既減輕了過擬合,又節約了時間

83:25
min_samples_leaf=1, 3, 5, 10, 25

84:10
max_features=0.5,意思是每次尋找切分點時,使用50%的特徵,這與列取樣有區別

Lesson3

07:50
對訓練集,使用df, y, nas = proc_df( df_raw, 'SalePrice' )
nas可作為引數在處理測試集時使用

30:20
RF的fit函式可以送入DataFrame,然而最終還是要轉換為Numpy Array
所以當資料量很大的時候,提前轉換為Numpy Array可以節約不少的時間
%prun m.fit( x, y )可以找出哪一條語句的執行時間最長

55:00
訓練了多個決策樹,對於某個樣本,這些決策樹給出不同的預測值,那麼這些預測值的方差越小,表示這個樣本的confidence較高,預測值的方差越大,表示這個樣本的confidence較低

77:30
詳細解釋了RF中feature importance的計算方式