1、介紹
Ridge 回歸通過對系數的大小施加懲罰來解決 普通最小二乘法 的一些問題。 嶺系數最小化的是帶罰項的殘差平方和,

其中,α≥0α≥0 是控制系數收縮量的復雜性參數: αα 的值越大,收縮量越大,這樣系數對共線性的魯棒性也更強。
2、參數
alpha:{float,array-like},shape(n_targets)
正則化強度; 必須是正浮點數。 正則化改善了問題的條件並減少了估計的方差。 較大的值指定較強的正則化。 Alpha對應於其他線性模型(如Logistic回歸或LinearSVC)中的C^-1。
如果傳遞數組,則假定懲罰被特定於目標。 因此,它們必須在數量上對應。
copy_X:boolean,可選,默認為True
如果為True,將復制X; 否則,它可能被覆蓋。
fit_intercept:boolean
是否計算此模型的截距。 如果設置為false,則不會在計算中使用截距(例如,數據預期已經居中)。
max_iter:int,可選
共軛梯度求解器的最大迭代次數。 對於’sparse_cg’和’lsqr’求解器,默認值由scipy.sparse.linalg確定。 對於’sag’求解器,默認值為1000。
normalize:boolean,可選,默認為False
如果為真,則回歸X將在回歸之前被歸一化。 當fit_intercept設置為False時,將忽略此參數。 當回歸量歸一化時,注意到這使得超參數學習更加魯棒,
並且幾乎不依賴於樣本的數量。 相同的屬性對標准化數據無效。 然而,如果你想標准化,請在調用normalize = False訓練估計器之前,使用preprocessing.StandardScaler處理數據。
solver:{‘auto’,’svd’,’cholesky’,’lsqr’,’sparse_cg’,’sag’}
用於計算的求解方法:
‘auto’根據數據類型自動選擇求解器。
‘svd’使用X的奇異值分解來計算Ridge系數。對於奇異矩陣比’cholesky’更穩定。
‘cholesky’使用標准的scipy.linalg.solve函數來獲得閉合形式的解。
‘sparse_cg’使用在scipy.sparse.linalg.cg中找到的共軛梯度求解器。作為迭代算法,這個求解器比大規模數據(設置tol和max_iter的可能性)的“cholesky”更合適。
‘lsqr’使用專用的正則化最小二乘常數scipy.sparse.linalg.lsqr。它是最快的,但可能不是在舊的scipy版本可用。它還使用迭代過程。
‘sag’使用隨機平均梯度下降。它也使用迭代過程,並且當n_samples和n_feature都很大時,通常比其他求解器更快。注意,“sag”快速收斂僅在具有近似相同尺度的特征上被保證。
可以使用sklearn.preprocessing的縮放器預處理數據。
所有最后四個求解器支持密集和稀疏數據。但是,當fit_intercept為True時,只有’sag’支持稀疏輸入。
新版本0.17支持:隨機平均梯度下降解算器。
tol:float 解的精度。
random_state:int seed,RandomState實例或None(默認)
偽隨機數生成器的種子,當混洗數據時使用。 僅用於’sag’求解器。
新版本0.17:random_state支持隨機平均漸變。
3、返回值
coef_:array,shape(n_features,)或(n_targets,n_features)
4、權重向量。
intercept_:float | array,shape =(n_targets,)
決策函數的獨立項,即截距。 如果fit_intercept = False,則設置為0.0。
n_iter_:array或None,shape(n_targets,)
每個目標的實際迭代次數。 僅適用於sag和lsqr求解器。 其他求解器將返回None。在版本0.17中出現。
5、實例代碼
print(__doc__) from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import numpy as np from sklearn.linear_model import Ridge,RidgeCV import matplotlib.font_manager as fm myfont = fm.FontProperties(fname='C:\Windows\Fonts\simsun.ttc') data=[ [0.607492, 3.965162], [0.358622, 3.514900], [0.147846, 3.125947], [0.637820, 4.094115], [0.230372, 3.476039], [0.070237, 3.210610], [0.067154, 3.190612], [0.925577, 4.631504], [0.717733, 4.295890], [0.015371, 3.085028], [0.067732, 3.176513], [0.427810, 3.816464], [0.995731, 4.550095], [0.738336, 4.256571], [0.981083, 4.560815], [0.247809, 3.476346], [0.648270, 4.119688], [0.731209, 4.282233], [0.236833, 3.486582], [0.969788, 4.655492], [0.335070, 3.448080], [0.040486, 3.167440], [0.212575, 3.364266], [0.617218, 3.993482], [0.541196, 3.891471], [0.526171, 3.929515], [0.378887, 3.526170], [0.033859, 3.156393], [0.132791, 3.110301], [0.138306, 3.149813] ] #生成X和y矩陣 dataMat = np.array(data) # X = dataMat[:,0:1] # 變量x X = dataMat[:,0:1] # 變量x y = dataMat[:,1] #變量y X_train,X_test,y_train,y_test = train_test_split(X,y ,train_size=0.8) # model = Ridge(alpha=0.5) model = RidgeCV(alphas=[0.1, 1.0, 10.0]) # 通過RidgeCV可以設置多個參數值,算法使用交叉驗證獲取最佳參數值 model.fit(X_train, y_train) # 線性回歸建模 # print('系數矩陣:\n',model.coef_) # print('線性回歸模型:\n',model) # print('交叉驗證最佳alpha值',model.alpha_) # 只有在使用RidgeCV算法時才有效 # 使用模型預測 y_predicted = model.predict(X_test) plt.scatter(X_train, y_train, marker='o',color='green',label='訓練數據') # 繪制散點圖 參數:x橫軸 y縱軸 plt.scatter(X_test, y_predicted, marker='*',color='blue',label='測試數據') plt.legend(loc=2,prop=myfont) plt.plot(X_test, y_predicted,c='r') # 繪制x軸和y軸坐標 plt.xlabel("x") plt.ylabel("y") # 顯示圖形 plt.show()
6、顯示圖形

參考:https://blog.csdn.net/luanpeng825485697/article/details/79829778
