機器學習練習(不使用模型框架)
<開發中>
還再調整架構,預計之後嘗試提供GUI或網站去操作,是用戶能自行匯入分類資料集、選擇損失函數(RMSE/Cross-Entroy)、調整超參數等等
<說明來源>
完成一個分類任務,並且只能使用 numpy、pandas 和 matplotlib 這三個套件。
練習定義訓練過程中的前向傳播和反向傳播。
自學練習使用OOP寫法來完成簡單分類任務。
將超參數、和激活函數獨立出來,可以方便地進行未來的進行微調與更新。
<使用>
import nbimporter #let file.ipynb can import to your file.py
from midLabML import NeuralNetwork
#you can fine tune hyperparameters by this dict
hyperparameters = {
'n': 20, # n: number of hidden neurons
'split_ratio': 0.5, # split_ratio: train/test split ratio
'epochs': 500, # epochs: number of training epochs
'learning_rate': 0.05 # learning_rate: learning rate
}
nn = NeuralNetwork(**hyperparameters)
nn.load_dataset()
nn.train()
Epoch: 1, RMSE: 0.6774
Epoch: 2, RMSE: 0.4455
Epoch: 3, RMSE: 0.3657
Epoch: 4, RMSE: 0.3371
Epoch: 5, RMSE: 0.3261
Epoch: 6, RMSE: 0.3197
Epoch: 7, RMSE: 0.3143
Epoch: 8, RMSE: 0.3092
Epoch: 9, RMSE: 0.3044
...
predict_df, true_df = nn.predict() #get predicted dataframe
nn.loss_plot()
nn.predict_plot()