2019/3/30

二元线性回归——矩阵公式法又名:对于python科学库的糟心尝试

二元线性回归严格意义上其实不过是换汤不换药,我对公式进行推导,其实也就是跟以前一样的求偏导并使之为零,并且最终公式的严格推导我大概也只能说是将将理解,毕竟最初的矩阵一开始都不太清楚应该是什么样子的,其中,Coursera的课程起到了非常显著的帮助。

其实这个部分我并不想写太多,因为理解并不是十分透彻,总体来讲,感觉就是一个公式的事情,其中对于python数据类型以及python库函数的使用反而耗费的时间更多,回头来更新。

python库函数的运用非常重要,也是卡住我好久的主要原因,其次,对于python几种数据结构类型也让我十分苦恼,毕竟我不太清楚大部分函数会返回给我什么样的结果。

其中最终的公式应该说是非常普及了,随便的搜索便可查找到,虽然花了这么大的功夫,最终带给我的印象却是远远不及梯度下降的那种循序渐进看着计算机一步步探索来的深刻。

然而,这不正是前人的努力所要想做到的一步到位的方式吗?

虽然是真真正正的计算公式,但是若是面对特殊的矩阵情况或者过大的矩阵,这个方法也是力不从心的,详情我不多赘述,毕竟我还是个没有系统学习线代概率的赤脚蒟蒻。

先这样,或许会再来更新吧。

以下是利用Coursera提供的部分数据进行的实现图像:

这里给出完整代码:

import xlrd
import sympy as sp
import xlwt
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
workbook=xlrd.open_workbook(r'dataset.xlsx') sheet=workbook.sheet_by_index(0)
Y1=sheet.col_values(0)
X1=sheet.col_values(1)
X2=sheet.col_values(2)
#Axes3D
fig = plt.figure()
ax = Axes3D (fig)
ax.scatter(X1, X2, Y1)
#H为100*3矩阵,读入现有数据,第0列为1
H=[]
for i in range(100):
values=[]
values.append(1)
values.append(X1[i])
values.append(X2[i])
H.append(values)
#将H0数组化
H0 = np.array(H)
#H1为H的转置矩阵
H1=np.array(H0).T
H2=H1@H0
#求逆矩阵
H3=np.linalg.inv(H2)
#最终结果计算
temp=H3@H1@Y1
temp=np.mat(temp)
w0=temp[0,0]
w1=temp[0,1]
w2=temp[0,2]
#生成两坐标轴取点
x1=np.linspace(0,5000,100)
x2=np.linspace(0,5,100)
#将两坐标轴点合成
x1, x2 = np.meshgrid(x1, x2)
#结果方程,并输出最终结果图
#z=w0+w1*x1+w2*x2
ax.plot_surface(x1,x2,w0+w1*x1+w2*x2)
plt.show()

Python实现——二元线性回归(最小二乘法)的更多相关文章

  1. Python实现——一元线性回归(最小二乘法)

    2019/3/24 线性回归--最小二乘法公式法 暂时用python成功做出来了图像,但是其中涉及到的公式还是更多的来自于网络,尤其是最小二乘法公式中的两个系数的求解,不过目前看了下书高数也会马上提及 ...

  2. python实现多变量线性回归(Linear Regression with Multiple Variables)

    本文介绍如何使用python实现多变量线性回归,文章参考NG的视频和黄海广博士的笔记 现在对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为( x1,x2,..., ...

  3. Python实现实现基于最小二乘法的线性回归

    下面展示利用Python实现基于最小二乘法的线性回归模型,同时不需要引入其他科学计算以及机器学习的库. 利用Python代码表示如下: #首先引入数据集x,和y的值的大小利用Python的数据结构:列 ...

  4. 机器学习:Python中如何使用最小二乘法

    之所以说"使用"而不是"实现",是因为python的相关类库已经帮我们实现了具体算法,而我们只要学会使用就可以了.随着对技术的逐渐掌握及积累,当类库中的算法已经 ...

  5. Python实现——一元线性回归(梯度下降法)

    2019/3/25 一元线性回归--梯度下降/最小二乘法_又名:一两位小数点的悲剧_ 感觉这个才是真正的重头戏,毕竟前两者都是更倾向于直接使用公式,而不是让计算机一步步去接近真相,而这个梯度下降就不一 ...

  6. 基于python的二元霍夫曼编码译码详细设计

    一.设计题目 对一幅BMP格式的灰度图像(个人证件照片)进行二元霍夫曼编码和译码 二.算法设计 (1)二元霍夫曼编码: ①:图像灰度处理: 利用python的PIL自带的灰度图像转换函数,首先将彩色图 ...

  7. python——绘制二元高斯分布的三维图像,

    在对数据进行可视化的过程中,可能经常需要对数据进行三维绘图,在python中进行三维绘图其实是比较简单的,下面我们将给出一个二元高斯分布的三维图像案例,并且给出相关函数的参数. 通常,我们绘制三维图像 ...

  8. python 单变量线性回归

      单变量线性回归(Linear Regression with One Variable)¶ In [54]: #初始化工作 import random import numpy as np imp ...

  9. python实现简单线性回归

    之前推导了一元线性回归和多元线性回归,今天就用python来实现一下一元线性回归 先看下之前推导的结果   ,  第一种是用循环迭代的计算方法.这里的x,y是numpy中的array类型 def su ...

随机推荐

  1. Win7 IE11 F2无法切换版本

    Win7 IE11 F2无法切换版本 http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=45154 选择操作系统对应的版本 ht ...

  2. iOS坑爹的could not find any information for class named xxx

    关掉项目也无法解决,最后把文件delete掉,然后选“Remove Reference”,这样就不会真正删除文件.接着选“File -> Add Files to ...”添加回来就可以了.

  3. Android 模拟MotionEvent事件 触发输入法

    Android 模拟MotionEvent事件 触发输入法   android输入法layoutbutton文本编辑encoding 关键词:MotionEvent,模拟按键,模拟点击事件,主动弹出输 ...

  4. 在aspx页动态加载ascx页面内容,给GridView控件绑定数据

    在aspx页动态加载ascx页面内容 //加载ascx页面内容Control c1 = this.Page.LoadControl("WebUserControl1.ascx"); ...

  5. Codeforces 1109D (树的计数问题)

    思路看这篇博客就行了:https://www.cnblogs.com/zhouzhendong/p/CF1109D.html, 讲的很好 今天学到了prufer编码,这是解决树上计数问题的一大利器,博 ...

  6. c语言实践:RS信号报告

    题目: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength)    信号强度即大小. 其中R位于报告第一位,共分5级,用1—5数字 ...

  7. Django--admin后台

    需求 通过后台和models​操作数据库表 实现 1.后台中看到数据库中的表 app01/admin.py 1 2 from app01 import models admin.site.regist ...

  8. Usage of the @ (at) sign in ASP.NET

    from:http://www.mikesdotnetting.com/article/258/usage-of-the-at-sign-in-asp-net Thursday, January 22 ...

  9. NSString 对象保存在哪? @“xxx”和 stringWithFormat:@"xxx" 区别?

    NSString *str1=@"string";//这种是保存在常量池 NSString *str2=@"string"; NSLog(@"str1 ...

  10. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(4):JDK动态代理+拦截器

    一.拦截器的理解 学习拦截器之前需要对动态代理和反射有一定的基础. 官方说法:         java里的拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个actio ...