7.1.1 回归与现代预测

7.1.2 最小二乘法

7.1.3 代码实现

(1)导入数据

def loadDataSet(self,filename):     #加载数据集X = [];Y = []fr = open(filename)for line in fr.readlines():curLine = line.strip().split('\t')X.append(float(curLine[0]))Y.append(float(curLine[-1]))return X,Y

(2)绘制图形函数
# (2)绘制图形函数
def plotscatter(Xmat,Ymat,a,b,plt):fig = plt.figure()ax  = fig.add_subplot(111) #绘制图形位置ax.scatter(Xmat,Ymat,c='blue',marker='o')#绘制散点图Xmat.sort()                #对Xmat元素进行排序yhat = [a.float(xi)+b for xi in Xmat] #计算预测值plt.plot(Xmat,yhat,'r')plt.show()return  yhat

(3)主函数

Xmat,Ymat = loadDataSet("regdataset.txt") #导入数据文件
meanX     = mean(Xmat)                      #原始数据的均值
meanY     = mean(Ymat)                      #原始数据的均值
dX        = Xmat-meanX                      #各元素与均值的差
dY        = Ymat-meanY                      #各元素与均值的差
#手工计算
# sumXY = 0;Sqx = 0
# for i in xrange(len(dx)):
#     sumXY += double(dx[i])*double(dy[i])
#     Sqx   = double(dX[i])**2

sumXY = vdot(dX,dY) #返回两个向量的点乘multiply
Sqx   = sum(power(dX,2))#向量的平方:(X-meanX)^2#计算斜率和截距
a = sumXY/Sqx
b = meanY-a*meanX
print a,b
#绘制图形
plotscatter(Xmat,Ymat,a,b,plt)

 7.1.4 正规方程组法
7.1.5 正规方程组的代码实现
 
#数据矩阵,分类标签
xArr,yArr = loadDataSet("regdataset.txt") #导入数据文件

m = len(xArr) #生成X坐标列
Xmat = mat(ones((m,2)))
for i in xrange(m):Xmat[i,1] = xArr[i]
Ymat = mat(yArr).T   #转化为Y列
xTx = Xmat.T*Xmatws = [] #直线的斜率和截距
if linalg.det(xTx) != 0.0:    #行列式不为0ws = linalg.inv(Xmat.T*Xmat)*(Xmat.T*Ymat)#矩阵的正规方程组的公式:inv(X.T*X)*X.T*Y
else:print  u"矩阵为奇异阵,无逆矩阵"sys.exit(0)#退出程序
print  "ws:",ws

 

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

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

郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测...相关推荐

  1. 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(三)SVD...

    4.5.1 SVD算法回顾 A = U∑VT 其中:A是N*M的矩阵,U是M*M的方阵(里面向量正交,称为左奇异向量),∑是一个M*N的矩阵,VT是一个N*N的矩阵(里面向量正交,右奇异向量) 那么奇 ...

  2. 《机器学习:算法原理与编程实践》的读书笔记:SMO部分最难,大部分代码基于Scikit-Learn,决策树其实用处不大

    机器学习:算法原理与编程实践 目录 [隐藏] 1 机器学习的基础 2 中文文本分类 3 决策树的发展 4 推荐系统原理 5 梯度寻优 6 神经网络初步 7 预测的技术与哲学 8 万能分类器:SVM 9 ...

  3. OpenCV4机器学习算法原理与编程实战(附部分模型下载地址)

    一直想找本书,能在机器学习复杂的算法原理和高效的编程实战之间达到合适的平衡:让感兴趣的同学拿到就有能用的代码,还有基本原理的介绍,因为了解原理才知道什么时候用什么算法最合适,以及如何调整参数. 一直没 ...

  4. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)

    全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...

  5. Java编程思想学习笔记-第11章

    <?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...

  6. Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)

    全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...

  7. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  8. 机器学习算法入门与编程实践课后题及答案(唐四新等编著)

    目录 习题1 习题2 习题3 习题4 习题5 习题6 习题7 习题8 习题1 1.无监督学习的两个主要任务是(多选)(BD). A.回归         B.降维         C.分类       ...

  9. 《机器学习西瓜书》学习笔记——第七章_贝叶斯分类器_朴素贝叶斯分类器

    朴素:特征条件独立:贝叶斯:基于贝叶斯定理. 朴素贝叶斯是经典的机器学习算法之一,也基于概率论的分类算法,属于监督学习的生成模型.朴素贝叶斯原理简单,也很容易实现,多用于文本分类,比如垃圾邮件过滤. ...

最新文章

  1. 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
  2. 【PAT甲级 LinkedHashMap】1041 Be Unique (20 分) Java、C++版
  3. 文秘专业计算机基础考题,《计算机应用基础》课程无纸化试题库建设及应用分析...
  4. 2021年NBA季后赛第三轮晋级预测
  5. Hay Points
  6. ARM处理器系统初始化过程
  7. 抖音自动上号源码分享
  8. js传中文到java乱码怎么解决方法_页面js中文乱码怎么处理?
  9. 【数据集的制作】VOC2007数据集格式的转换(voc2yolo)与划分
  10. 系统设计.如何设计一个秒杀系统(完整版)
  11. CMMB 全国各地市频率规划表
  12. FPGA之JESD204B接口——总体概要 实例上
  13. linux清理unbuntu无用空间,如何给Ubuntu系统清理垃圾
  14. echarts-横坐标文字竖着显示和倾斜45度显示
  15. v全球与中国男士西装市场经营规模分析与投资前景研究报告2022年版
  16. 电脑硬盘空间如何免费扩容2TB+
  17. Managed DirectX中的DirectShow应用(简单Demo及源码)
  18. css 绘制圆形 扇形
  19. 微信小程序提示:https://api.map.baidu.com 不在以下 request 合法域名列表中
  20. java实现ip首部校验和算法,理解传输层中UDP协议首部校验和以及校验和计算方法的Java实现...

热门文章

  1. flash流媒体资料
  2. C++_typedef名字
  3. Data Lake Analytics + OSS数据文件格式处理大全
  4. python—Celery异步分布式
  5. VR医疗|全球首例“换头手术”成功了么?
  6. javascript 判断浏览器
  7. android--------WebView实现 Html5 视频标签加载
  8. C#快速生成数据数组
  9. iptables命令语法(3)
  10. Ruby一些小case总结