机器学习笔记(八)——岭回归标准方程法

本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(

学习知识、资源和数据来自:机器学习算法基础-覃秉丰_哔哩哔哩_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]]

posted @ 2021-07-26 12:04  Lcy的瞎bb  阅读(286)  评论(0编辑  收藏  举报