溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中嶺回歸的示例分析

發(fā)布時間:2021-11-30 10:00:15 來源:億速云 閱讀:157 作者:小新 欄目:云計算

這篇文章將為大家詳細(xì)講解有關(guān) Python中嶺回歸的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

嶺回歸是一種專門用于共線性數(shù)據(jù)分析的有偏估計回歸方法,實(shí)質(zhì)上時改良的最小二乘估計法,通過放棄最小二乘法的無偏性(在反復(fù)抽樣的情況下,樣本均值的集合的期望等于總體均值),以損失部分信息、降低精度為代價獲得回歸系數(shù)更為符合實(shí)際、更可靠的回歸方法,對共線性問題和病態(tài)數(shù)據(jù)的擬合要強(qiáng)于最小二乘法經(jīng),常用于多維問題與不適定問題(ill-posed problem)。
嶺回歸通過引入一個懲罰變量解決了普通最小二乘法的問題。嶺回歸相關(guān)系數(shù)是的懲罰殘差平方和最?。?
Python中嶺回歸的示例分析
Python中嶺回歸的示例分析是收縮率,既控制模型復(fù)雜度的因子。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model#創(chuàng)建一個希伯特矩陣(高度病態(tài),任何一個元素的點(diǎn)發(fā)生變動,整個矩陣的行列式的值和逆矩陣都會發(fā)生巨大變化)#這里的加法運(yùn)算類似于矩陣相乘X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10)#計算路徑n_alphas = 200alphas = np.logspace(-10, -2, n_alphas)
clf = linear_model.Ridge(fit_intercept=False)

coefs = []for a in alphas:
    clf.set_params(alpha=a)
    clf.fit(X, y)
    coefs.append(clf.coef_)#圖形展示#設(shè)置刻度ax = plt.gca() 
#設(shè)置刻度的映射 ax.plot(alphas, coefs)#設(shè)置x軸的刻度顯示方式ax.set_xscale('log')#翻轉(zhuǎn)x軸ax.set_xlim(ax.get_xlim()[::-1])#設(shè)置x、y標(biāo)簽以及標(biāo)題plt.xlabel('alpha')
plt.ylabel('weights')
plt.title('Ridge coefficients as a function of the regularization')#使得坐標(biāo)軸最大值和最小值與數(shù)據(jù)保持一致plt.axis('tight')
plt.show()

Python中嶺回歸的示例分析
上圖展示了嶺回歸模型的解的10個分量隨正則化參數(shù)Alpha變化而變化的趨勢。每一種顏色代表了不同的相關(guān)系數(shù)向量特征,它隨著傳入的正則化參數(shù)Alpha的變化而變化。由于圖像形態(tài),嶺回歸又稱為脊回歸。
這個例子展示了嶺回歸處理病態(tài)矩陣( ill-conditioned matrices)的優(yōu)勢。在病態(tài)矩陣?yán)锩恳粋€目標(biāo)變量微小的變動都會產(chǎn)生巨大的方差。對于這種情況就需要設(shè)置一個比較合適的正則化參數(shù)來減少離差(噪聲)。
當(dāng)正則參數(shù)Alpha非常大的時候,正則化的影響支配了二乘法函數(shù),相關(guān)系數(shù)趨近于0。在路徑的結(jié)尾,當(dāng)正則參數(shù)alpha趨近于0的時候,結(jié)果解趨近于了普通最小二乘法,系數(shù)表現(xiàn)出了很大的震蕩。

設(shè)置正則參數(shù)
在實(shí)踐中要不斷的調(diào)節(jié)正則參數(shù)Alpha在上述過程中尋求一種平衡。
RidgeCV實(shí)現(xiàn)了嶺回歸的交叉驗(yàn)證,下面是一種高效的交叉驗(yàn)證方式-留一交叉驗(yàn)證(leave-one-out):

>>> from sklearn import linear_model
>>> clf = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0])
>>> clf.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])       
RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None,
    normalize=False)
>>> clf.alpha_                                      
0.1

關(guān)于“ Python中嶺回歸的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI