/2nd-ML100Days

Homework Files for the 2019 Machine Learning 100 Days Marathon Challenge

Primary LanguageJupyter Notebook

Machine Learning 100 Days Marathon Challenge

2019 機器學習百日馬拉松 | Certificate of Completion

000

Please paste the URL from Github to https://nbviewer.jupyter.org/ if failed to load.

Data Cleaning and Preprocessing

Day 01 : Introduction and Data Assessment
Day 02 : Exploratory Data Analysis (EDA)
Day 03 : Pandas DataFrame
Day 04 : Pandas Data Types
Day 05 : EDA Distribution
Day 06 : Handle Outlier
Day 07 : Data Normalization
Day 08 : DataFrame Operations
Day 09 : EDA Correlation 1/2
Day 10 : EDA Correlation 2/2
Day 11 : Kernal Density Estimation (KDE)
Day 12 : Discrete Continous Data 1/2
Day 13 : Discrete Continous Data 2/2
Day 14 : Subplot Using Matplotib
Day 15 : Heatmap and Grid-plot
Day 16 : Logistic Regression

Feature Engineering

Day 17 : Introduction of Feature Engineering
Day 18 : Feture Types
Day 19 : Numerical Feature - Replace Missing Values
Day 20 : Numerical Feature - Remove Outliers
Day 21 : Numerical Feature - Remove Skweness
Day 22 : Categorical Feature - One-Hot Encoding and Label Encoding
Day 23 : Categorical Feature - Mean Encoding
Day 24 : Categorical Feature - Other Advanced Processing
Day 25 : Time Series Feature - Time Cycle
Day 26 : Feature Combination - Numerical and Numerical
Day 27 : Feature Combination - Numerical and Categorical
Day 28 : Feature Selection
Day 29 : Feature Estimation
Day 30 : Leaf Encoding on Categorical Features

Machine Learning Model Building

Day 31 : Introduction of Machine Learning
Day 32 : Framework and Processing in Machine Learning
Day 33 : How Machine Learn?
Day 34 : Spliting Training and Evaluation Set
Day 35 : Regression vs. Classification
Day 36 : Evaluation Metrics
Day 37 : Regression Model - Linear/Logistic 1/2
Day 38 : Regression Model - Linear/Logistic 2/2
Day 39 : Regression Model - LASSO/Ridge 1/2
Day 40 : Regression Model - LASSO/Ridge 2/2
Day 41 : Tree Based Model - Decision Tree 1/2
Day 42 : Tree Based Model - Decision Tree 2/2
Day 43 : Tree Based Model - Random Forest 1/2
Day 44 : Tree Based Model - Random Forest 2/2
Day 45 : Tree Based Model - Gradient Boosting Machine 1/2
Day 46 : Tree Based Model - Gradient Boosting Machine 2/2

Fine-tuning

Day 47 : Hyper-Parameters Tuning and Optimization
Day 48 : Introduction of Kaggle
Day 49 : Bleding Method
Day 50 : Stacking Method

Mid-Term Exam

Day 51 : Mid-Term Exam 1/3
Day 52 : Mid-Term Exam 2/3
Day 53 : Mid-Term Exam 3/3

Unsupervised Learning

Day 54 : Introduction of Unsupervised Learning
Day 55 : Clustering Method
Day 56 : K-Mean
Day 57 : Hierarchical Clustering
Day 58 : Hierarchical Clustering on 2D Toy Dataset
Day 59 : Dimension Reduction - PCA
Day 60 : Dimension Reduction - PCA on MNIST
Day 61 : Dimension Reduction - T-SNE 1/2
Day 62 : Dimension Reduction - T-SNE 2/2

Deep Learning

Day 63 : Introduction of Neural Netork
Day 64 : Experience TensorFlow PlayGround - Learning Rate
Day 65 : Experience TensorFlow PlayGround - Activation Function/Regularization

Deep Learning on Keras

Day 66 : Introducion of Keras
Day 67 : Keras Dataset
Day 68 : Keras Sequential API
Day 69 : Keras Module API
Day 70 : Multi-Layer Perception (MLP)
Day 71 : Loss Functions
Day 72 : Activation Function
Day 73 : Gradient Descend 1/2
Day 74 : Gradient Descend 2/2
Day 75 : Back Propagation
Day 76 : Optimizers
Day 77 : Validation and Overfitting
Day 78 : KeyNote before Training Models
Day 79 : Learning Rate Effects
Day 80 : Combination of Optomizers and Learning Rate
Day 81 : Reduce Overfitting - Regularization
Day 82 : Reduce Overfitting - Dropout
Day 83 : Reduce Overfitting - Batch Normalization
Day 84 : Reduce Overfitting - Hyper-Parameters Tuning and Comparison
Day 85 : Reduce Overfitting - Early Stop
Day 86 : Saving Model Using Callbacks
Day 87 : Learning Rate Decay
Day 88 : Designing Keras Callbacks Function
Day 89 : Designing Loss Funciton
Day 90 : Image Recognition Using Tranditional Computer Vsion Methods
Day 91 : Image Recognition Using Machine Learning Models

Convolutional Neural Network (CNN) in Deep Learning

Day 92 : Introdoction of CNN 1/2
Day 93 : Introdoction of CNN 2/2
Day 94 : Parameters Tuning in CNN Layers
Day 95 : Pooling Layer in Keras
Day 96 : CNN Layers in Keras
Day 97 : CNN vs. DNN on CIFAR-10
Day 98 : Data Generator in Keras
Day 99 : Data Augmentation in Keras
Day 100 : Transfer Learning

Final Exam

Day 101 : Final Exam 1/3
Day 102 : Final Exam 2/3
Day 103 : Final Exam 3/3

Extra Practices

Day 104 : Web-based Interactive Neural Network Visualization
Day 105 : Convolutional Neural Network Review
Day 106 : Commonly used data sets (Cifar-10, ImageNet, COCO)
Day 107 : Computer Vision Applications - Image Recognition, Segmentation, and Detection


第二屆機器學習百日馬拉松

Day001 資料介紹與評估資料:挑戰是什麼?動手分析前請三思

Day002 EDA-1/讀取資料EDA: Data summary:如何讀取資料以及萃取出想要了解的信息

Day003 3-1如何新建一個 dataframe?3-2 如何讀取其他資料? (非 csv 的資料,如圖檔、純文字檔、json 等)

Day004 EDA: 欄位的資料類型介紹及處理:了解資料在 pandas 中可以表示的類型

Day005 EDA資料分佈:用統計方式描述資料

Day006 EDA: Outlier 及處理:偵測與處理例外數值點:1. 透過常用的偵測方法找到例外 2. 判斷例外是否正常

Day007 常用的數值取代:中位數與分位數連續數值標準化:偵測與處理例外數值 1. 缺值或例外取代 2. 數據標準化

Day008 DataFrame operationData frame merge/常用的 DataFrame 操作:1. 常見的資料操作方法 2. 資料表串接

Day009 EDA:correlation/相關係數簡介:1.了解相關係數 2.利用相關係數直觀地理解對欄位與預測目標之間的關係

Day010 EDA from Correlation:深入了解資料,從 correlation 的結果下手

Day011 EDA: 不同數值範圍間的特徵如何檢視/繪圖與樣式Kernel Density Estimation(KDE)

Day012 EDA: 把連續型變數離散化:簡化連續性變數

Day013 程式實作 把連續型變數離散化:深入了解資料,從簡化後的離散變數下手

Day014 Subplots:探索性資料分析-資料視覺化-多圖檢視1.將數據分組一次呈現2.把同一組資料相關的數據一次攤在面前

Day015 探索性資料分析-資料視覺化-熱像圖:以直觀的方式檢視變數間的相關性/格狀圖:繪製變數間的散佈圖及分布

Day016 模型初體驗Logistic Regression:使用任何複雜的模型之前,有一個最簡單的模型當作 baseline 是一個好習慣

Day017 特徵工程簡介:介紹機器學習完整步驟中,特徵工程的位置以及流程架構

Day018 特徵類型:特徵工程依照特徵類型,做法不同,大致可分為數值/類別/時間型三類特徵

Day019 數值型特徵-補缺失值與標準化:數值型特徵首先必須填補缺值與標準化,在此複習並展示對預測結果的差異

Day020 數值型特徵 - 去除離群值:數值型特徵若出現少量的離群值,則需要去除以保持其餘數據不被影響

Day021 數值型特徵 - 去除偏態:數值型特徵若分布明顯偏一邊,則需去除偏態以消除預測的偏差

Day022 類別型特徵 - 基礎處理:介紹類別型特徵最基礎的作法 : 標籤編碼與獨熱編碼

Day023 類別型特徵 - 均值編碼:類別型特徵最重要的編碼 : 均值編碼,將標籤以目標均值取代

Day024 類別型特徵 - 類別型特徵常見編碼 : 計數編碼對應出現頻率相關的特徵,雜湊編碼對應眾多類別而無法排序的特徵

Day025 時間型特徵:時間型特徵可抽取出多個子特徵,或周期化,或取出連續時段內的次數

Day026 特徵組合 - 數值與數值組合:特徵組合的基礎 : 以四則運算的各種方式,組合成更具預測力的特徵

Day027 特徵組合 - 類別與數值組合:類別型對數值型特徵可以做群聚編碼,與目標均值編碼類似,但用途不同

Day028 特徵選擇:介紹常見的幾種特徵篩選方式

Day029 特徵評估:介紹並比較兩種重要的特徵評估方式,協助檢測特徵的重要性

Day030 分類型特徵優化 - 葉編碼:葉編碼 : 適用於分類問題的樹狀預估模型改良

Day031 機器學習概論:機器學習、深度學習與人工智慧差別是甚麼? 機器學習又有甚麼主題應用?

Day032 機器學習-流程與步驟:資料前處理 -> 訓練/測試集切分 ->選定目標與評估基準 -> 建立模型 -> 調整參數

Day033 機器如何學習?了解機器學習的定義,過擬合 (Overfit) 是甚麼,該如何解決

Day034 訓練/測試集切分的概念:為何要做訓練/測試集切分?有什麼切分的方法?

Day035 regression vs. classification:回歸問題與分類問題的區別?如何定義專案的目標

Day036 評估指標選定/evaluation metrics:專案該如何選擇評估指標?常用指標有哪些?

Day037 regression model 介紹 - 線性迴歸/羅吉斯回歸:線性迴歸/羅吉斯回歸模型的理論基礎與使用時的注意事項

Day038 regression model 程式碼撰寫:如何使用 Scikit-learn 撰寫線性迴歸/羅吉斯回歸模型的程式碼

Day039 regression model 介紹 - LASSO 回歸/ Ridge 回歸:LASSO 回歸/ Ridge 回歸的理論基礎與與使用時的注意事項

Day040 regression model 程式碼撰寫:使用 Scikit-learn 撰寫 LASSO 回歸/ Ridge 回歸模型的程式碼

Day041 tree based model - 決策樹 (Decision Tree) 模型介紹:決策樹 (Decision Tree) 模型的理論基礎與使用時的注意事項

Day042 tree based model - 決策樹程式碼撰寫:使用 Scikit-learn 撰寫決策樹 (Decision Tree) 模型的程式碼

Day043 tree based model - 隨機森林 (Random Forest) 介紹:理論基礎與使用時的注意事項

Day044 tree based model - 隨機森林程式碼撰寫:使用 Scikit-learn 撰寫隨機森林 (Random Forest) 模型的程式碼

Day045 tree based model - 梯度提升機 (Gradient Boosting Machine) 介紹模型理論基礎與使用時的注意事項

Day046 tree based model - 梯度提升機程式碼撰寫:使用 Scikit-learn 撰寫

Day047 超參數調整與優化:什麼是超參數 (Hyper-paramter) ? 如何正確的調整超參數?常用的調參方法為何?

Day048 Kaggle 競賽平台介紹:介紹全球最大的資料科學競賽網站。如何參加競賽?

Day049 集成方法 : 混合泛化(Blending):什麼是集成? 集成方法有哪些? Blending 的寫作方法與效果為何?

Day050 集成方法 : 堆疊泛化(Stacking):Stacking 的設計方向與主要用途是什麼? 通常會使用什麼套件實作?

Day051 Kaggle 期中考:優惠券使用預測

Day052 Kaggle 期中考:優惠券使用預測

Day053 Kaggle 期中考:優惠券使用預測

Day054 Clustering 1 非監督式機器學習簡介:非監督式學習簡介、應用場景

Day055 Clustering 2 聚類算法:K-means

Day056 K-mean 觀察 : 使用輪廓分析:非監督模型要以特殊評估方法(而非評估函數)來衡量 : 輪廓分析

Day057 Clustering 3 階層分群算法:Hierarchical Clustering

Day058 階層分群法 觀察 : 使用 2D 樣版資料集:非監督評估方法 : 2D樣版資料集是什麼? 如何生成與使用?

Day059 Dimension Reduction 1 降維方法-主成份分析:PCA

Day060 PCA 觀察 : 使用手寫辨識資料集:以較複雜的範例 : sklearn版手寫辨識資料集, 展示PCA的降維與資料解釋能力

Day061 Dimension Reduction 2 降維方法-T-SNE

Day062 T-SNE 觀察 : 分群與流形還原:什麼是流形還原? 除了 T-SNE 之外還有那些常見的流形還原方法?

Day063 神經網路介紹:Neural Network 簡介

Day064 深度學習體驗 : 模型調整與學習曲線:介紹體驗平台 TensorFlow PlayGround,並初步了解模型的調整

Day065 深度學習體驗 : 啟動函數與正規化:在 TF PlayGround 上,體驗進階版的深度學習參數調整

Day066 Keras 安裝與介紹:如何安裝 Keras 套件

Day067 Keras Dataset:Keras embedded dataset的介紹與應用

Day068 Keras Sequential API:序列模型搭建網路

Day069 Keras Module API:Keras Module API的介紹與應用

Day070 Multi-layer Perception多層感知:MLP簡介

Day071 損失函數:損失函數的介紹與應用

Day072 啟動函數:啟動函數的介紹與應用

Day073 梯度下降Gradient Descent:梯度下降Gradient Descent簡介

Day074 Gradient Descent 數學原理:介紹梯度下降的基礎數學原理

Day075 BackPropagation:反向式傳播簡介

Day076 優化器optimizers:優化器optimizers簡介

Day077 訓練神經網路的細節與技巧 - Validation and overfit:檢視並了解 overfit 現象

Day078 訓練神經網路前的注意事項:資料是否經過妥善的處理?運算資源為何?超參數的設置是否正確?

Day079 訓練神經網路的細節與技巧 - Learning rate effect:比較不同 Learning rate 對訓練過程及結果的差異

Day080 優化器與學習率的組合與比較:搭配不同的優化器與學習率進行神經網路訓練

Day081 訓練神經網路的細節與技巧 - Regularization 正歸化

Day082 訓練神經網路的細節與技巧 - Dropout 隨機缺失

Day083 訓練神經網路的細節與技巧 - Batch normalization 批次正規化

Day084 正規化/機移除/批次標準化的 組合與比較:練習時間:Hyper-parameters 大雜燴

Day085 訓練神經網路的細節與技巧 - 使用 callbacks 函數做 earlystop:悔不當初的煞車機制 (EarlyStopping)

Day086 訓練神經網路的細節與技巧 - 使用 callbacks 函數儲存 model:使用 Keras 內建的 callback 函數儲存訓練完的模型

Day087 訓練神經網路的細節與技巧 - 使用 callbacks 函數做 reduce learning rate

Day088 訓練神經網路的細節與技巧 - 撰寫自己的 callbacks 函數

Day089 訓練神經網路的細節與技巧 - 撰寫自己的 Loss function

Day090 使用傳統電腦視覺與機器學習進行影像辨識:了解在神經網路發展前,如何使用傳統機器學習演算法處理影像辨識

Day091 使用傳統電腦視覺與機器學習進行影像辨識:應用傳統電腦視覺方法+機器學習進行 CIFAR-10 分類

Day092 卷積神經網路 (Convolution Neural Network, CNN) 簡介

Day093 卷積神經網路架構細節:為什麼比DNN更適合處理影像問題, 以及Keras上如何實作CNN

Day094 卷積神經網路 - 卷積(Convolution)層與參數調整:卷積層原理與參數說明

Day095 卷積神經網路 - 池化(Pooling)層與參數調整

Day096 Keras 中的 CNN layers

Day097 使用 CNN 完成 CIFAR-10 資料集

Day098 訓練卷積神經網路的細節與技巧 - 大量數據:資料無法放進記憶體?如何使用Python的生成器generator?

Day099 訓練卷積神經網路的細節與技巧 - 處理小量數據:Data Augmentation 資料增強

Day100 訓練卷積神經網路的細節與技巧 - Transfer learning 轉移學習

Day101 Kaggle期末考

Day102 Kaggle期末考

Day103 Kaggle期末考

Day104 互動式網頁神經網路視覺化

Day105 CNN卷積網路回顧

Day106 常見影像資料集介紹 (Cifar-10, ImageNet, COCO)

Day107 電腦視覺應用介紹 - 影像分類, 影像分割, 物件偵測


記錄每天學習進度+作業+延伸閱讀時數:

2019/04/16(二) 開始,4/18-5/17上班因素進度落後

2019/05/21(二) 總閱讀時數 5小時 35分,進度 Day19-Day25

2019/05/22(三) 總閱讀時數 5小時 55分,進度 Day26-Day33

2019/05/23(四) 總閱讀時數 2小時 5分,進度 Day34-Day35

2019/05/24(五) 總閱讀時數 3小時 0分,進度 Day36-Day38

2019/05/28(二) 總閱讀時數 1小時 50分,進度 Day39-Day41

2019/05/31(五) 總閱讀時數 2小時 30分,進度 Day42-Day44

2019/06/02(日) 總閱讀時數 5小時 25分,進度 複習 Day1-Day16

2019/06/03(一) 總閱讀時數 3小時 20分,進度 複習 Day17-Day23

2019/06/04(二) 總閱讀時數 4小時 5分,進度 Day45-Day47

2019/06/07(五) 總閱讀時數 2小時 50分,進度 Day48-Day50

2019/06/10(一) 總閱讀時數 3小時 50分,進度 期中考Day51-Day53

2019/06/11(二) 總閱讀時數 2小時 30分,進度 期中考調參

2019/06/13(四) 總閱讀時數 3小時 0分,進度 繼續期中考調參

2019/06/18(二) 總閱讀時數 4小時 20分,進度 Day54-Day56

2019/06/21(五) 總閱讀時數 2小時 15分,進度 Day57-Day59

2019/06/25(二) 總閱讀時數 2小時 25分,進度 Day60-Day62

2019/06/28(五) 總閱讀時數 2小時 15分,進度 Day63-Day65

2019/07/02(二) 總閱讀時數 2小時 30分,進度 Day66-Day68

2019/07/05(五) 總閱讀時數 3小時 0分,進度 Day69-Day71

2019/07/09(二) 總閱讀時數 1小時 50分,進度 Day72-Day74

2019/07/12(五) 總閱讀時數 2小時 45分,進度 Day75-Day78

2019/07/16(二) 總閱讀時數 1小時 30分,進度 Day79-Day81

2019/07/19(五) 總閱讀時數 2小時 30分,進度 Day82-Day85

2019/07/23(二) 總閱讀時數 3小時 30分,進度 Day86-Day88

2019/07/26(五) 總閱讀時數 2小時 25分,進度 Day89-Day91

2019/07/30(二) 總閱讀時數 2小時 15分,進度 Day92-Day94

2019/08/02(五) 總閱讀時數 2小時 10分,進度 Day95-Day98

2019/08/06(二) 總閱讀時數 1小時 50分,進度 Day99-Day100

2019/08/13(二) 總閱讀時數 3小時 10分,進度 Day101-Day103

2019/08/21(三) 總閱讀時數 1小時 40分,進度 Day104-Day107