岭回归
2016-03-13 11:20
666 查看
对于样本数据的特征比数据样本点还多的数据我们就没有办法使用标准线性回归和局部加权线性回归来计算,因为没有办法对矩阵求逆。所以这一小节我们引入岭回归来处理这种数据,当然岭回归也可以处理普通的数据。回归系数的计算公式:
![](http://b.hiphotos.baidu.com/baike/s%3D176/sign=ac88c9c7f6deb48fff69a5d9c61e3aef/d0c8a786c9177f3e367bafab75cf3bc79e3d56cc.jpg)
在这个公式中我们加入了一项:
![](http://a.hiphotos.baidu.com/baike/s%3D46/sign=dc2d61142d2eb938e86d7bf4d76227c0/0824ab18972bd407bd30b10879899e510eb3094b.jpg)
进而就可以对矩阵求逆,
![](http://g.hiphotos.baidu.com/baike/s%3D10/sign=b99d3fcccb3d70cf48faae0df9dc6b15/a8014c086e061d95ccd85acd79f40ad163d9caad.jpg)
是用户指定的值,
![](http://d.hiphotos.baidu.com/baike/s%3D12/sign=0c337861442309f7e36fa910730eee6d/bd315c6034a85edfcec893d64b540923dc5475fa.jpg)
是一个单位矩阵,通过引入该项可以减少不重要的参数。了解了公式我们就来分析一下代码:
第一个函数用于计算回归系数,就是上面公式的实现,输入参数分别为训练数据集和标签数据集。以及lam值,如果用户不指定就会默认为0.2.接下来分析第二个函数,首先为了能够岭回归和缩减技术首先要对特征做标准化处理。使每维的特征具有同等重要性。接下来要进行30次调用上面的函数求解回归系数,当然我们也可以自己定义调用次数。最后返回所有的回归系数,我们就可以在这些回归系数中挑选最好的。
![](http://b.hiphotos.baidu.com/baike/s%3D176/sign=ac88c9c7f6deb48fff69a5d9c61e3aef/d0c8a786c9177f3e367bafab75cf3bc79e3d56cc.jpg)
在这个公式中我们加入了一项:
![](http://a.hiphotos.baidu.com/baike/s%3D46/sign=dc2d61142d2eb938e86d7bf4d76227c0/0824ab18972bd407bd30b10879899e510eb3094b.jpg)
进而就可以对矩阵求逆,
![](http://g.hiphotos.baidu.com/baike/s%3D10/sign=b99d3fcccb3d70cf48faae0df9dc6b15/a8014c086e061d95ccd85acd79f40ad163d9caad.jpg)
是用户指定的值,
![](http://d.hiphotos.baidu.com/baike/s%3D12/sign=0c337861442309f7e36fa910730eee6d/bd315c6034a85edfcec893d64b540923dc5475fa.jpg)
是一个单位矩阵,通过引入该项可以减少不重要的参数。了解了公式我们就来分析一下代码:
def ridgeRegres(xMat,yMat,lam=0.2): xTx = xMat.T*xMat denom = xTx + eye(shape(xMat)[1])*lam if linalg.det(denom) == 0.0: print "This matrix is singular, cannot do inverse" return ws = denom.I * (xMat.T*yMat) return ws def ridgeTest(xArr,yArr): xMat = mat(xArr); yMat=mat(yArr).T yMean = mean(yMat,0) yMat = yMat - yMean #regularize X's xMeans = mean(xMat,0) xVar = var(xMat,0) xMat = (xMat - xMeans)/xVar numTestPts = 30 wMat = zeros((numTestPts,shape(xMat)[1])) for i in range(numTestPts): ws = ridgeRegres(xMat,yMat,exp(i-10)) wMat[i,:]=ws.T return wMat
第一个函数用于计算回归系数,就是上面公式的实现,输入参数分别为训练数据集和标签数据集。以及lam值,如果用户不指定就会默认为0.2.接下来分析第二个函数,首先为了能够岭回归和缩减技术首先要对特征做标准化处理。使每维的特征具有同等重要性。接下来要进行30次调用上面的函数求解回归系数,当然我们也可以自己定义调用次数。最后返回所有的回归系数,我们就可以在这些回归系数中挑选最好的。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法