机器学习笔记(八)——岭回归标准方程法
本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(
学习知识、资源和数据来自:机器学习算法基础-覃秉丰_哔哩哔哩_bilibili
数据和公式在上次的博客:机器学习笔记(七)——岭回归(sklearn) - Lcy的瞎bb - 博客园 (cnblogs.com)
有了岭回归的标准方程,就可以直接写岭回归的代码啦!没啥好说的。(其实是越来越懒了)
import numpy as np #岭回归标准方程法 def ling(x_data,y_data,al=0.4): x_mat=np.mat(x_data) y_mat=np.mat(y_data) xTx=x_mat.T*x_mat+al*np.eye(x_mat.shape[1]) if np.linalg.det(xTx)==0.0: print('This matrix can not do inverse.') return w=xTx.I*x_mat.T*y_mat return w data=np.genfromtxt('C:/Users/Lenovo/Desktop/学习/机器学习资料/线性回归以及非线性回归/longley.csv',delimiter=',') x_data=data[1:,2:] y_data=data[1:,1,np.newaxis] X_data=np.concatenate((np.ones((16,1)),x_data),axis=1) w=ling(X_data,y_data) print(w) print(np.mat(X_data)*w) print(y_data) #预测值与真实值比较
得到结果:
[[ 3.96935793e-04]
[ 1.99633035e-01]
[ 2.06763338e-02]
[ 5.64293208e-03]
[-1.49809860e+00]
[ 1.04607154e-01]
[-1.88803216e-01]]
[[ 83.61434891]
[ 86.91251299]
[ 88.10951038]
[ 90.92454971]
[ 96.01620952]
[ 97.78388528]
[ 98.41681416]
[100.0344969 ]
[103.25629985]
[105.05435285]
[107.44836724]
[109.48291107]
[112.83672075]
[113.96514846]
[115.34306367]
[117.70064947]]
[[ 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]]