天天看點

Day 55:嶺回歸,模型的儲存和讀取2021/07/23

Pyython 回憶錄

  • 2021/07/23
    • 嶺回歸
    • 模型的儲存與讀取

2021/07/23

嶺回歸

就是帶有正則化的線性回歸-Ridge

sklearn.liner_model.Ridge

Day 55:嶺回歸,模型的儲存和讀取2021/07/23

正則化力度越大,高次幂的影響越小

嶺回歸得到的回歸系數更符合實際,更可靠。另外,能讓估計參數的波動範圍變小,變得更穩定、在存在病态資料偏多的研究中有較大的實用價值。

模型的儲存與讀取

在sciklearn中也有模型儲存和讀取的API

sklearn.externals import joblib

from sklearn.datasets import load_boston
from sklearn.linear_model import  LinearRegression,SGDRegressor
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
from sklearn.externals import joblib

def myliner():
    """線性回歸直接預測房子"""

    #擷取資料
    lb = load_boston()

    #分割資料 訓練集和測試集
    x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25)
    #進行标準化
    #特征值和目标值都需要進行标準化,執行個體話兩個标準化方法
    std_x = StandardScaler()
    x_train = std_x.fit_transform(x_train)
    x_test = std_x.transform(x_test)

    std_y = StandardScaler()
    y_train = std_y.fit_transform(y_train.reshape(-1,1)) #這裡要轉化為二維數組 (資料本身是一維)
    y_test = std_y.transform(y_test.reshape(-1,1))

    # 調取線性回歸模型
    lr = LinearRegression()
    lr.fit(x_train, y_train)
    print("正規方程取得的權重系數:", lr.coef_)#列印一下取得了哪些W值

    #儲存好模型
    joblib.dump(lr, "./temp/test.pkl")

    #運作模型
    model = joblib.load("./temp/test.pkl")
    # 預測房價結果
    y_lr_predict = std_y.inverse_transform(model.predict(x_test))
    print("正規方程預測的房價",y_lr_predict)
    
           

調取回歸模型後就可以儲存模型,儲存的pkl檔案是一個二進制檔案。以後就可以通過

joblib.load()

直接調取pkl檔案就等于是調取模型。