博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.3 岭回归...
阅读量:6981 次
发布时间:2019-06-27

本文共 1708 字,大约阅读时间需要 5 分钟。

7.3 岭回归

7.3.1 验证多重共线性

7.3.2 岭回归理论

7.3.3 岭际分析

7.3.4 k值的判断

7.3.5 辅助函数

 (1)导入多维数据集:加载数据集

def loadDataSet(filename):    numFeat    = len(open(filename).readline().split('\t'))-1#get number of fields    dataMat    = []    labelMat   = []    fr         = open(filename)    for line in fr.readlines():        lineArr = []        curLine = line.strip().split('\t')        for i in range(numFeat):            lineArr.append(float(curLine[i]))        dataMat.append(lineArr)        labelMat.append(float(curLine[-1]))    return dataMat,labelMat

(2)标准化矩阵数据集

 

#标准化数据集def normData(xArr,yArr):    xMat = mat(xArr)    yMat = mat(yArr).T    yMean = mean(yMat,0)    xMean = mean(xMat,0)    ynorm = yMat - yMean    xVar  = var(xMat,0)    xnorm = (xMat-xMean)/xVar    return xnorm,ynorm

 (3)绘制图形

def scatterplot(wMat,k):#绘制图形    fig = plt.figure()    ax  = fig.add_subplot(111)    wMatT = wMat.T    m,n   = shape(wMatT)    for i in xrange(m):        ax.plot(k,wMatT[i,:])        ax.annotate("feature["+str(i)+"]",xy = (0,wMatT[i,0]),color = 'black')    plt.show()

 7.3.6 岭回归实现与K值确定

#前8列为Arr,后1列为yArrxArr,yArr = loadDataSet('abalone.txt')xMat,yMat = normData(xArr,yArr) #标准化数据集Knum      = 30 #确定k的迭代次数wMat      = zeros((Knum,shape(xMat)[1]))klist     = zeros((Knum,1))for i in xrange(Knum):    k = float(i)/500  #算法的目的是确定k的值    klist[i] = k      #k值列表    xTx      = xMat.T*xMat    denom    = xTx + eye(shape(xMat)[1])*k    if linalg.det(denom) == 0.0:        print "This matrix is singular,connot do inverse"        sys.exit(0)    ws = linalg.inv(denom) * (xMat.T*yMat)    wMat[i,:] = ws.Tprint klistscatterplot(klist,klist)scatterplot(wMat,klist)

 

 

 

 

参考资料:郑捷《机器学习算法原理与编程实践》 仅供学习研究

转载于:https://www.cnblogs.com/wuchuanying/p/6418113.html

你可能感兴趣的文章
Sass函数:Sass Maps的函数-map-has-key($map,$key)
查看>>
PHP----------php封装的一些简单实用的方法汇总
查看>>
windows下安装mysql8.0压缩版
查看>>
[原]对Linux环境下任务调度一点认识
查看>>
常用API(Object、String、StringBuffer、用户登陆注册)
查看>>
object.create()
查看>>
python os.path
查看>>
Java第一天学习笔记整理
查看>>
Leetcode: Maximum Depth of Binary Tree
查看>>
[scrum]2011/9/22-----第二天
查看>>
Sublime Text 3 个人使用总结
查看>>
python3 _笨方法学Python_日记_DAY3
查看>>
sed删除指定行
查看>>
配置Cesium编译环境
查看>>
如何参与团队合作?
查看>>
明显有人说谎
查看>>
如何启用SQL Server 2008的FILESTREAM特性
查看>>
OC基础第四讲--字符串、数组、字典、集合的常用方法
查看>>
ruby实时查看日志
查看>>
浅谈C语言 extern 指针与数组
查看>>