- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
附 预测数值型数据:回归
拟合直线
局部加权线性回归
理解数据
权衡偏差和方差
前言
预测联系型数据
“回归可以做任何事情”
最近有新意的应用:预测名人的离婚率
先介绍线性回归
再引入局部平滑技术
分析如何更好的拟合数据
在欠拟合情况下的缩减技术
探讨偏差和方差的概念
用线性回归找到最佳拟合直线
线性回归
优点:结果易于理解,计算上不复杂
缺点:对非线性的数据拟合不好
回归的目的是预测数值型目标值:找到目标的计算公式
预测某人的汽车功率:
HorsePower = 0.0015*annualSalary-0.99*hoursListeningToRadio
以上为回归方程
0.0015和-0.99为回归系数
求回归系数的过程即为回归——本次只讨论线性回归
回归的一般方法
收集数据
按输入要求整理数据
数据可视化以直观分析数据
训练算法:找到回归系数
测试算法:使用R2或者预测值和数据的拟合度来分析模型的效果
使用算法:给定输入的时候预测输出
基本算法
例:对以下点集进行拟合
import numpy as np
lstDt = []
lstLbl = [] # lbl: label
fr = open(.\\ex0.txt)
for line in fr.readlines():
arLn = line.strip().split()
lstDt.append([float(arLn[0]), float(arLn[1])])
lstLbl.append(float(arLn[2]))
计算回归:
xMat = np.mat(lstDt)
yMat = np.mat(lstLbl).T
xTx = xMat.T*xMat
if np.linalg.det(xTx)==0.0:
print This is matrix is singular, cannot do inverse!
else:
ws = xTx.I*(xMat.T*yMat)
绘图
plt.figure()
lstX = [dt[1] for dt in lstDt]
plt.scatter(lstX, lstLbl)
lstY = [ws[0, 0]+ws[1, 0]*x for x in lstX]
plt.plot(lstX, lstY)
如何如何评判模型的好坏?
不同数据集:
分别做线性回归,
得到完全一样的两个模型
如何比较回归效果?
计算yHat和y的相关系数:
arrYHat = np.array(lstY)
arrY = np.squeeze(np.array(yMat))
print np.corrcoef(arrY, arrYHat)
局部加权线性回归
平滑值 k = 1
平滑值 k = 0.01
平滑值 k = 0.003
代码:算法实现
xMat = np.mat(lstDt)
yMat = np.mat(lstLbl).T
m = xMat.shape[0]
k = 0.01
lstY = []
for i in range(m):
wgt = np.mat(np.eye(m))
dtTst = xMat[i, :]
for j in range(m):
difMat = dtTst - xMat[j, :]
wgt[j, j] = np.exp(difMat*difMat.T/(-2*k**2))
xTx = xMat.T*(wgt*xMat)
if np.linalg.det(xTx)==0.0:
print This is matrix is singular, cannot do inverse!
else:
ws = xTx.I*(xMat.T*(wgt*yMat))
matV = dtTst*ws
lstY.append(matV[0, 0])
代码:显示结果
plt.figure()
lstX = [dt[1] for dt in lstDt]
plt.scatter(lstX, lstLbl)
sIdx = np.argsort(lstX)
lstXSort = [lstX[idx] for idx in sIdx]
lstYSort = [lstY[idx] for idx in sIdx]
plt.plot(lstXSort, lstYSort)
arrYHat = np.array(lstY)
arrY = np.squeeze(np.array(yMat))
print np.corrcoef(arrY, arrYHat)
普通和加权的代码区别
示例:预测鲍鱼的年龄
使用较小的核将得到较小的训练误差:
k = 0.1:拟合值与原点集的误差为56.8426
k = 1:拟合值与原点集的误差为429.891
k =
您可能关注的文档
最近下载
- 【MOOC】《中国马克思主义与当代》(北京科技大学)中国大学MOOC慕课答案.docx VIP
- 国际象棋的课程教案.docx VIP
- 器械科制度汇编.pdf
- 2025年新人教版7年级英语上册全册教学课件.pptx
- 第七章 集装箱码头船舶配积载业务.ppt VIP
- 风中奇缘-中英文台词打印版.doc VIP
- 《机电概念设计基础》课件——运动副.pptx VIP
- 股市主力操盘盘 口摩斯密码(原创内容,侵权必究).pptx
- 孙子兵法中的思维智慧 智慧树网课章节测试答案 .docx VIP
- 二 《“友邦惊诧”论》(教学设计)-【中职专用】高二语文同步精品课堂(高教版2024·拓展模块上册).docx VIP
文档评论(0)