江振國 機器學習2023
目錄
main_p1.py
: 執行第一題的code,產生以下輸出:
Problem1_dataset.png
main_p2.py
: 執行第二題的code,產生以下輸出:
Problem2_dataset.png
Problem2_linear_fitting_plot.png
main_p3.py
: 執行第三題的code,產生以下輸出:
Problem3_dataset.png
Problem3_polynomial_deg5_fitting_plot.png
Problem3_polynomial_deg10_fitting_plot.png
Problem3_polynomial_deg14_fitting_plot.png
main_p4.py
: 執行第四題的code,產生以下輸出:
Problem4_dataset.png
Problem4-1_linear_fitting_plot.png
Problem4-2_polynomial_deg5_fitting_plot.png
Problem4-2_polynomial_deg10_fitting_plot.png
Problem4-2_polynomial_deg14_fitting_plot.png
main_p5.py
: 執行第五題的code,產生以下輸出:
Problem5_dataset_m10.png
Problem5_dataset_m80.png
Problem5_dataset_m320.png
Problem5_polynomial_deg14_m10_fitting_plot.png
Problem5_polynomial_deg14_m80_fitting_plot.png
Problem5_polynomial_deg14_m320_fitting_plot.png
main_p6.py
: 執行第六題的code,產生以下輸出:
Problem6_dataset.png
Problem6_lambda0_fitting_plot.png
Problem6_lambda0.001_m_fitting_plot.png
Problem6_lambda1_m_fitting_plot.png
Problem6_lambda1000_m_fitting_plot.png
util.py
:相關類別與通用函式:
LinearDataLoader
PolynomialDataLoader
LinearRegressionModel
LinearRegressionModel_L2
read_dataset
write_dataset
執行
main_p1.py
LinearDataLoader
類別建立dataloader
物件,此物件會根據加入Gaussion noise ~ 的方程式 產生15筆屬於 且等間距的點,並畫出Problem1_dataset.png資料分布圖。執行
main_p2.py
generate
函式會引入LinearDataLoader
類別建立dataloader
物件,此物件會根據加入Gaussion noise ~ 的方程式 產生15筆屬於 且等間距的點,並畫出Problem2_dataset.png資料分布圖。linearRegression
函式會引入LinearRegressionModel
類別建立model
物件,該類別中的fit
函式實作了線性迴歸中的公式解:
predict
函式計算出 y_predicted 數值,實作基於以下公式:
result_LR
函式畫出fitting plot,並在指令列輸出training error及five-fold cross-validation errors。
fitting plot :
Problem2_linear_fitting_plot.png
執行
main_p3.py
generate
函式會引入LinearDataLoader
類別建立dataloader
物件,此物件會根據加入Gaussion noise ~ 的方程式 產生15筆屬於 且等間距的點,並畫出Problem3_dataset.png資料分布圖。
在polyFeatures
函式中引入scikit-Learn套件的PolynomialFeatures
函式,根據第三題的Hint將依照degree 5 ,10, 14轉換成多項式資料。
polynomialRegression
函式會引入LinearRegressionModel
類別建立model
物件,該類別中的fit
函式實作線性迴歸中的公式解(參第二題-線性迴歸)。predict
函式計算出 y_predicted 數值(參第二題-線性迴歸)。result_LR
函式分別針對degree 5 ,10, 14畫出fitting plot,並在指令列輸出training error及five-fold cross-validation errors
fitting plot :
Problem3_polynomial_deg5_fitting_plot.png
Problem3_polynomial_deg10_fitting_plot.png
Problem3_polynomial_deg14_fitting_plot.png
執行
main_p4.py
generate
函式會引入PolynomialDataLoader
類別建立dataloader
物件,此物件會根據加入Gaussion noise ~ 的方程式 產生15筆屬於 且等間距的點,並畫出Problem4_dataset.png資料分布圖。linear
函式會引入main_p2.py
中的linearRegression
函式,該函式已實作fit
與predict函式
(參第二題-線性迴歸)。result_LR
函式畫出fitting plot,並在指令列輸出training error及five-fold cross-validation errors。
fitting plot :
Problem4-1_linear_fitting_plot.png
polynomial
函式會引入main_p3.py
中的polynomialRegression
函式,該函式已實作fit
與predict函式
(參第二題-線性迴歸)。result_PR
函式分別針對degree 5 ,10, 14畫出fitting plot,並在指令列輸出training error及five-fold cross-validation errors
fitting plot :
Problem4-2_polynomial_deg5_fitting_plot.png
Problem4-2_polynomial_deg10_fitting_plot.png
Problem4-2_polynomial_deg14_fitting_plot.png
執行
main_p5.py
generate
函式。generate
函式會引入PolynomialDataLoader
類別建立dataloader
物件,此物件會根據加入Gaussion noise ~ 的方程式 產生 筆屬於 且等間距的點,並畫出Problem5_dataset_m10.png、Problem5_dataset_m80.png、Problem5_dataset_m320.png資料分布圖。main_p3.py
中的polyFeatures
函式,將依照degree 14轉換成多項式資料。main_p3.py
中的polynomialRegression
函式,該函式已實作fit
與predict函式
(參第二題-線性迴歸)。result_PR
函式,在degree 14分別針對m 10, 80, 320畫出fitting plot,並在指令列輸出training error及five-fold cross-validation errors
fitting plot :
Problem5_polynomial_deg14_m10_fitting_plot.png
Problem5_polynomial_deg14_m80_fitting_plot.png
Problem5_polynomial_deg14_m320_fitting_plot.png
執行
main_p6.py
generate
函式會引入PolynomialDataLoader
類別建立dataloader
物件,此物件會根據加入Gaussion noise ~ 的方程式 產生 筆屬於 且等間距的點,並畫出Problem6_dataset.png資料分布圖。main_p3.py
中的polyFeatures
函式,將依照degree 14轉換成多項式資料。polynomialRegression_
函式,首先引入LinearRegressionModel_L2
類別建立model
物件,該類別中的fit
函式實作了線性迴歸中的:
predict
函式計算出 y_predicted 數值,實作基於以下公式:
result_PR
函式,在degree 14分別針對 = 0 , 0.001/m , 1/m , 1000/m畫出fitting plot,並在指令列輸出training error及five-fold cross-validation errors
fitting plot :
Problem6_lambda0_fitting_plot.png
Problem6_lambda0.001_m_fitting_plot.png
Problem6_lambda1_m_fitting_plot.png
Problem6_lambda1000_m_fitting_plot.png
m | 說明 | Problem1_dataset.png |
---|---|---|
15 | 圖中藍色虛線代表 方程式 |
m | 說明 | Problem2_dataset.png |
---|---|---|
15 | 圖中藍色虛線代表 方程式 |
圖中紫色實線代表模型產生的擬合
the training error | 5-fold cross-validation errors | Result |
---|---|---|
0.8964992526345636 | [-0.04810712 -1.96706334 -0.44430244 -1.72981605 -1.3645887 ] |
m | 說明 | Problem3_dataset.png |
---|---|---|
15 | 圖中藍色虛線代表 方程式 |
圖中藍色虛線代表 方程式,紫色實線代表模型產生的擬合
degree | the training error | 5-fold cross-validation errors | Result |
---|---|---|---|
5 | 1.0237825706969441 | [ -30.47502251 -4.79297531 -3.18617494 -3.55245159 -178.32849592] | |
10 | 0.7274995205660019 | [-2.32915571e+07 -3.46602901e+02 -1.18478742e+02 -1.08917069e+03 -5.13077210e+08] | |
14 | 5.5699897482027674e-11 | [-1.04879400e+07 -1.31826246e+02 -7.80325447e+01 -1.25908124e+03 -1.61189445e+08] |
m | 說明 | Problem4_dataset.png |
---|---|---|
15 | 圖中藍色虛線代表 方程式 |
圖中紫色實線代表模型產生的擬合
the training error | 5-fold cross-validation errors | Result |
---|---|---|
0.2465849105402421 | [-0.63311177 -0.7355077 -0.06815203 -0.68571631 -0.68740372] |
圖中藍色虛線代表 方程式,紫色實線代表模型產生的擬合
degree | the training error | 5-fold cross-validation errors | Result |
---|---|---|---|
5 | 0.0014616666934130422 | [-0.00984511 -0.00963286 -0.00428898 -0.00234264 -0.23753631] | |
10 | 0.0006617456926407959 | [-6.15112941e+03 -1.37956774e+00 -1.03498534e-02 -1.57689634e-01 -1.15482767e+04] | |
14 | 0.30725359519219175 | [-3.71501121e+02 -1.46598200e+00 -5.48066285e-02 -1.09184283e+02 -3.77850067e+08] |
m | 說明 | Problem5_dataset_m10.png Problem5_dataset_m80.png Problem5_dataset_m320.png |
---|---|---|
10 | 圖中藍色虛線代表 方程式 | |
80 | 圖中藍色虛線代表 方程式 | |
320 | 圖中藍色虛線代表 方程式 |
圖中藍色虛線代表 方程式,紫色實線代表模型產生的擬合
m | the training error | 5-fold cross-validation errors | Result |
---|---|---|---|
10 | 0.26579638461646415 | [-5.34474871e+00 -2.69572472e-02 -1.28324989e+01 -1.20571907e-01 -2.26045959e+02] | |
80 | 0.09702557395514014 | [-7.80439730e+01 -9.83597401e-03 -2.80287668e-02 -2.60831038e-03 -1.55851669e+05] | |
320 | 0.009371370542904935 | [-2.36947024e+03 -7.82045120e-03 -5.12510575e-03 -3.59297386e-03 -1.36939954e+04] |
m | 說明 | Problem6_dataset.png |
---|---|---|
15 | 圖中藍色虛線代表 方程式 | |
圖中藍色虛線代表 方程式,紫色實線代表模型產生的擬合
the training error | 5-fold cross-validation errors | Result | |
---|---|---|---|
0 | 0.7261844030043304 | [-2.50383054e+04 -3.78808618e+00 -1.32271121e-02 -1.24534303e+01 -2.54983378e+07] | |
0.001/m | 0.0015849940672020915 | [-7.93788882e-02 -4.08927160e-03 -1.68043575e-02 -1.90180453e-02 -1.34337946e+01] | |
1/m | 0.10696137036854274 | [-0.84285473 -0.53992693 -0.05073262 -0.3311832 -3.29782521] | |
1000/m | 0.4509918241572265 | [-0.31590819 -0.8695116 -0.14364495 -0.91238358 -0.2338576 ] |
cross_val_scoreestimator
需要實作estimator物件才能使用,花了滿多時間在了解官方文檔。