官术网_书友最值得收藏!

1.4 算法實現

1.4.1 最小二乘法

首先,我們基于最小二乘法實現線性回歸,代碼如下:

此段代碼十分簡單,簡要說明如下。

  • _ols()方法:最小二乘法的實現,即
  • _preprocess_data_X()方法:對進行預處理,添加列并設置為1。
  • train()方法:訓練模型,調用_ols()方法估算模型參數,并保存。
  • predict()方法:預測,實現函數,對中每個實例進行預測。

1.4.2 梯度下降

接下來,我們基于(批量)梯度下降實現線性回歸,代碼如下:

上述代碼簡要說明如下(詳細內容參看代碼注釋)。

  • __init__()方法:構造器(也稱為構造函數),保存用戶傳入的超參數。
  • _predict()方法:預測的內部接口,實現函數
  • _loss()方法:實現損失函數,計算當前下的損失,該方法有以下兩個用途。
    • ◆ 供早期停止法使用:如果用戶通過超參數tol啟用早期停止法,則調用該方法計算損失。
    • ◆ 方便調試:迭代過程中可以每次打印出當前損失,觀察變化的情況。
  • _gradient()方法:計算當前梯度
  • _gradient_descent()方法:實現批量梯度下降算法。
  • _preprocess_data_X()方法:對進行預處理,添加列并設置為1。
  • train()方法:訓練模型。該方法由3部分構成:
    • ◆ 對訓練集的X_train進行預處理,添加列并設置為1。
    • ◆ 初始化模型參數,賦值較小的隨機數。
    • ◆ 調用_gradient_descent()方法訓練模型參數
  • predict()方法:預測。內部調用_predict()方法對中每個實例進行預測。
主站蜘蛛池模板: 阿拉善左旗| 禹州市| 枣强县| 怀来县| 永修县| 苍溪县| 商南县| 无极县| 乌拉特前旗| 从化市| 瑞丽市| 奇台县| 乌兰县| 乌拉特中旗| 尚志市| 仪征市| 安达市| 忻州市| 根河市| 突泉县| 千阳县| 湄潭县| 萝北县| 麟游县| 崇义县| 大连市| 合水县| 礼泉县| 平和县| 遂溪县| 临夏县| 馆陶县| 宜丰县| 林芝县| 舞阳县| 桂林市| 宜兰市| 南皮县| 化德县| 东丰县| 广东省|