sklearn嶺迴歸應用

sklearn嶺迴歸應用

前言: 前面博文關於線性迴歸模型我們可以用梯度下降法或者標準方程法進行訓練,但是兩種方法各有優缺點。特別是標準方程法一個比較重要的缺點是數據存在不可逆現象則無法訓練出結果,而嶺迴歸就是解決標準方程法這一缺點出現的,嶺迴歸模型是由帶正則化的代價函數推導得到,他避免數據不可逆的現象,進而得到近似最優解。關於嶺迴歸的具體理論請點擊此處,到我的一篇博文中查看

一、sklearn嶺迴歸使用示例代碼

import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
import matplotlib.pyplot as plt

# 讀取數據
data = genfromtxt(r'longley.csv', delimiter=',')

# 切分數據
x_data = data[1:, 2:]
y_data = data[1:, 1]
print(y_data)
# 訓練模型

# 生成50個嶺係數的值
lmd = np.linspace(0.001, 1, 50)
model = linear_model.RidgeCV(alphas=lmd, store_cv_values=True)  # 利用嶺迴歸方法交叉驗證各個嶺係數的誤差,進而確定最終選擇哪個嶺係數
model.fit(x_data, y_data)

# 訓練得到的最合適的嶺係數
print(model.alpha_)
# loss值
print(model.cv_values_.shape)  # (16,50)每一個嶺係數對應的交叉驗證損失值爲對應列的和取平均

# 繪圖 (驗證求得嶺係數是否合理)
# 嶺係數和loss值的關係
plt.plot(lmd, model.cv_values_.mean(axis=0))  # model.cv_values_.mean(axis=0)是對列求平均值
# 最終選取的嶺係數的位置
plt.plot(model.alpha_, min(model.cv_values_.mean(axis=0)), 'ro')
plt.show()

# 根據訓練的模型進行預測
print(model.predict(x_data[2, np.newaxis]))  # 預測結果88.11216213與真實值88.2很接近,所以預測效果不錯

二、代碼運行結果圖

[ 83.   88.5  88.2  89.5  96.2  98.1  99.  100.  101.2 104.6 108.4 110.8
 112.6 114.2 115.7 116.9]
0.40875510204081633
(16, 50)
[88.11216213]

在這裏插入圖片描述
三、數據下載
鏈接:https://pan.baidu.com/s/14xi9nAW4DyY3mWFp_GTb0w
提取碼:3kf3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章