回归算法之岭回归
来源:互联网 发布:软件开发简历范文 编辑:程序博客网 时间:2024/04/18 10:04
1. 岭回归
- 首先,说一下岭回归名字的由来,
w^=(XTX+λI)−1⋅XTy ,其中,I 是单位矩阵(对角线全是1,像”山岭“),λ 是岭系数(顾名思义…改变其数值可以改变单位矩阵对角线的值) - 其次,岭回归是基于最小二乘法
w^=(XTX)−1⋅XTy , 最小二乘法中有时候XTX 可能不是满秩矩阵,也就是此时行列式为零,无法求逆 (A−1=1|A|⋅A∗ 其中A∗ 是伴随矩阵)
2. 公式
最小二乘法
岭回归公式
3. 伪代码
输入XY 以及lambda系数计算demo = XTX+lambda*I 判断是否为零计算 ws = demo.I * xTy
4.代码
# coding:utf-8import pylab as plfrom numpy import *from datetime import datetimedef loadData(fileName): labelMat = [] dataMat = [] with open(fileName) as txtFile: for line in txtFile.readlines(): labelMat.append(map(float, line.split())[-1]) dataMat.append(map(float, line.split())[0:-1]) return dataMat, labelMat # 4177*8# 计算ws #(xTx+IMat).I * xTydef ridge(xArr, yArr, lam=0.2): n = shape(xArr)[-1] IMat = eye(n) xTx = xArr.T * xArr demo = xTx + IMat * lam if linalg.det(demo) is 0: print "Warning !!!" return ws = demo.I * (xArr.T * yArr) # print ws return ws# 进行30次循环 每次的系数指数级改变# 数据进行标准化 y-ymean,x=(x-xmean)/xvardef rightTest(xArr, yArr, loopNum=30): xMat = mat(xArr) yMat = mat(yArr).T yMat -= mean(yMat, 0) xMat = (xMat - mean(xMat, 0)) / var(xMat, 0) weight = zeros((loopNum, shape(xMat)[1])) for i in range(loopNum): weight[i, :] = ridge(xMat, yMat, exp(i - 10)).T return weight# 打印图像def outPic(point): fig = pl.figure() ax = fig.add_subplot(1, 1, 1) ax.plot(point) pl.show()if __name__ == '__main__': start = datetime.now() data, label = loadData("abalone.txt") loopNum = 30 w = rightTest(data, label, loopNum) # print w outPic(w) print "耗时为:", datetime.now() - start
5. 打印图像 以及 分析
(横轴是循环次数就是相关岭系数 纵轴是回归系数) 从图像中可以看出,在这八个系数中有两个距离0比较远,所以数据的主要预测就可以依靠这两个系数
附 数据集
'''1 0.455 0.365 0.095 0.514 0.2245 0.101 0.15 151 0.35 0.265 0.09 0.2255 0.0995 0.0485 0.07 7-1 0.53 0.42 0.135 0.677 0.2565 0.1415 0.21 91 0.44 0.365 0.125 0.516 0.2155 0.114 0.155 100 0.33 0.255 0.08 0.205 0.0895 0.0395 0.055 70 0.425 0.3 0.095 0.3515 0.141 0.0775 0.12 8-1 0.53 0.415 0.15 0.7775 0.237 0.1415 0.33 20-1 0.545 0.425 0.125 0.768 0.294 0.1495 0.26 161 0.475 0.37 0.125 0.5095 0.2165 0.1125 0.165 9-1 0.55 0.44 0.15 0.8945 0.3145 0.151 0.32 19-1 0.525 0.38 0.14 0.6065 0.194 0.1475 0.21 141 0.43 0.35 0.11 0.406 0.1675 0.081 0.135 101 0.49 0.38 0.135 0.5415 0.2175 0.095 0.19 11-1 0.535 0.405 0.145 0.6845 0.2725 0.171 0.205 10-1 0.47 0.355 0.1 0.4755 0.1675 0.0805 0.185 101 0.5 0.4 0.13 0.6645 0.258 0.133 0.24 120 0.355 0.28 0.085 0.2905 0.095 0.0395 0.115 7-1 0.44 0.34 0.1 0.451 0.188 0.087 0.13 101 0.365 0.295 0.08 0.2555 0.097 0.043 0.1 7.....还有4000行'''
- 岭回归
- 公式
- 伪代码
- 代码
- 打印图像 以及 分析
- 附 数据集
阅读全文
0 0
- 回归算法之岭回归
- [DL]机器学习算法之岭回归
- 分类算法之逻辑回归
- 回归,岭回归。LASSO回归
- 数据挖掘回顾七:回归算法之 线性回归
- YOLO算法回归模型之回归的分析
- 岭回归 & lasso 回归
- lasso 回归 & 岭回归
- 逻辑回归算法--Logistic回归
- 回归模型-线性回归算法
- 岭回归与LASSO算法
- 回归分析之线性回归
- 回归问题之线性回归
- 回归
- 回归
- 回归
- 回归
- 回归
- MySQL-插入、更新与删除数据
- Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭
- 傅里叶变换和傅里叶级数的区别与联系(后续更新补充DTFT、DFS)
- SDUT-数据结构实验之查找一:二叉排序树
- Java基础02 方法与数据成员
- 回归算法之岭回归
- 仿UC头条首页-html+css+纯JS
- 数组---冒泡排序和选择排序
- JZOJ 5230. 【NOIP2017模拟A组模拟8.5】队伍统计
- Two Sum II
- NG机器学习week9 Anomaly Detection
- C++ vector(一)
- MFC编辑框
- 双彩虹是怎么回事?