本文主要探讨多元线性回归模型,假设函数,损失函数,梯度下降的实现以及预测,先来看一下原数据长什么样?

  • 原数据

ex1data2.txt有三列数据,第1列是自变量面积(x1),第2列是自变量卧室数(x2),第3列为因变量价格(y),维度是47*3,(如果你需要数据可以去三行科创微信公众号交流群要)首先,我们要对数据进行初探式的探索。

  • 探索性分析

绘制出所有变量的热力图,观察各变量之间的相关性

data_normalized = (data - data.mean())/(data.std()) #规范化处理
cor_matrix = data_normalized.corr() #相关性矩阵
fig = plt.figure(figsize = (6,4)) #新建画布
ax = fig.add_subplot(111)
ax = sns.heatmap(cor_matrix, cmap = plt.cm.Blues, linewidths=0.5, vmax=1, vmin=0 ,annot=True, annot_kws={'size':8,'weight':'bold'}) #热力图


从热力图可以看到面积和价格都非常高的相关性,卧室数也与价格有一定相关性,因此,可以提出如下假设

hθ(x1,x2)=θ0+θ1x1+θ2x2h_{\theta}(x_1,x_2) = \theta_0+\theta_1x_1+\theta_2x_2hθ​(x1​,x2​)=θ0​+θ1​x1​+θ2​x2​

其中 θi(1≤i≤3)\theta_i (1\leq i \leq 3)θi​(1≤i≤3)为待定的参数

  • 数据预处理

为了建立模型,我们先将自变量和因变量分离变换并且进行规范化处理

x = np.array(data_normalized[['area','bedroom']]).reshape(m,2) #自变量
X = np.insert(x, 0,1 ,axis =1) #增加常数列
y = np.array(data_normalized ['price']).reshape(m, 1) #因变量
  • 假设函数,损失函数,梯度下降及可视化实现

有了数据之后需要给出假设函数,损失函数,以及梯度下降实现方法,最好能够把损失函数下降过程可视化

alpha = 0.01 #学习率
max_iteration = 2000 #最大迭代次数def h(theta, X): #定义假设函数return  np.dot(X, theta)def costFunction(mytheta, X, y): #定义损失函数return  float(1./(2*m)*np.dot((h(mytheta, X)-y).T, (h(mytheta, X)-y)))def gradientDescent(X, start_theta = np.zeros(X.shape[1])): #定义梯度下降函数theta = start_thetathetahistory = [] #用来存放theta值costhistory = [] #用来存放损失值for iter in range(max_iteration):tmptheta = thetacosthistory.append(costFunction(theta, X,y))thetahistory.append(list(theta[:,0]))for j in range(len(tmptheta)):tmptheta[j] = theta[j] - (alpha/m)*np.sum((h(theta, X)-y)*np.array(X[:,j]).reshape(m, 1))theta = tmpthetareturn theta, thetahistory, costhistoryinitial_theta = np.zeros((X.shape[1], 1)) #初始化theta值theta, thetahistory, costhistory = gradientDescent(X, initial_theta)def plotConvengence(costhistory): #定义绘制损失函数曲线plt.figure(figsize = (6,4))plt.plot(range(len(costhistory)), costhistory)plt.title("Convengence of cost function")plt.xlabel("Iteration")plt.ylabel("Cost function")
plotConvengence(costhistory)

  • 预测

这样一来,我们就求出最佳的参数θ\thetaθ和假设方程,为了验证模型的准确性,来预测以面积为1650,卧室数为3的价格是多少?由于之前对数据进行了规范化,所以这个时候又需要还原回去计算出价格。

print("the best fitting function is: y = %0.4f+%0.4f*x_1+(%0.4f*x_2)"%(theta[0], theta[1],theta[2]))print("if the areas are 1650 and bedrooms are 3, what's the price?")area_normalized = (1650-data.mean()[0])/data.std()[0] #面积规范化
bedroom_normalized = (3-data.mean()[1])/data.std()[1] #卧室数规范化
price_mean = data.mean()[2] #规范化时的价格的均值
price_std = data.std()[2] #规范化时的价格的标准差
print("$%0.2f"%float((theta[0] + theta[1]*area_normalized + theta[2]*bedroom_normalized)* price_std + price_mean))

正常输入结果是 $293083.69.

延伸阅读

机器学习——单变量线性回归模型

机器学习——多元线性回归模型相关推荐

  1. python多元线性回归实例_Python机器学习多元线性回归模型 | kTWO-个人博客

    前言 在上一篇文章<机器学习简单线性回归模型>中我们讲解分析了Python机器学习中单输入的线性回归模型,但是在实际生活中,我们遇到的问题都是多个条件决定的问题,在机器学习中我们称之为多元 ...

  2. 吴恩达-机器学习-多元线性回归模型代码

    吴恩达<机器学习>2022版 第一节第二周 多元线性回归 房价预测简单实现         以下以下共两个实验,都是通过调用sklearn函数,分别实现了 一元线性回归和多元线性回归的房价 ...

  3. 机器学习(多元线性回归模型逻辑回归)

    多元线性回归 定义:回归分析中,含有两个或者两个以上自变量,称为多元回归,若自变量系数为1,则此回归为多元线性回归. (特殊的:自变量个数为1个,为一元线性回归)多元线性回归模型如下所示: 如上图所示 ...

  4. 机器学习10—多元线性回归模型

    多元线性回归模型statsmodelsols 前言 什么是多元线性回归分析预测法 一.多元线性回归 二.多元线性回归模型求解 2.1最小二乘法实现参数估计-估计自变量X的系数 2.2决定系数:R² 与 ...

  5. Python 实战多元线性回归模型,附带原理+代码

    作者 | 萝卜 来源 | 早起Python( ID:zaoqi-python ) 「多元线性回归模型」非常常见,是大多数人入门机器学习的第一个案例,尽管如此,里面还是有许多值得学习和注意的地方.其中多 ...

  6. python多元线性回归模型案例_Python 实战多元线性回归模型,附带原理+代码

    原标题:Python 实战多元线性回归模型,附带原理+代码 作者 | 萝卜 来源 | 早起Python( ID:zaoqi-python ) 「多元线性回归模型」非常常见,是大多数人入门机器学习的第一 ...

  7. 机器学习多元线性回归_过度简化的机器学习(1):多元回归

    机器学习多元线性回归 The term machine learning may sound provocative. Machines do not learn like humans do. Ho ...

  8. 原理 + 代码 | Python 实现多元线性回归模型 (建模 + 优化,附源数据)

    前言 多元线性回归模型非常常见,是大多数人入门机器学习的第一个案例,尽管如此,里面还是有许多值得学习和注意的地方.其中多元共线性这个问题将贯穿所有的机器学习模型,所以本文会将原理知识穿插于代码段中,争 ...

  9. 【项目实战】Python实现多元线性回归模型(statsmodels OLS算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回 ...

  10. numpy多元线性回归_Python 实战多元线性回归模型,附带原理+代码

    作者 | 萝卜来源 | 早起Python( ID:zaoqi-python ) 「多元线性回归模型」非常常见,是大多数人入门机器学习的第一个案例,尽管如此,里面还是有许多值得学习和注意的地方.其中多元 ...

最新文章

  1. SVN删除服务器端项目文件
  2. 自定义JSP中的Taglib标签之四自定义标签中的Function函数
  3. delphi Oracle导出多个表,Oracle数据库自动备份工具(Delphi源码)
  4. linux dump_stack
  5. Redis的几种拓展方案,你都清楚吗?
  6. [FFmpeg] ffplay 播放灰度帧
  7. 关于web开发的一点理解
  8. appium工作原理及启动方式
  9. mysql order优化2019_mysql 增加排序 性能差很多 怎么优化
  10. plc比c语言还难,plc编程好学吗??
  11. LTE 注网流程log分析
  12. Mac:小米手机刷机
  13. 微信小程序快捷键和windows快捷键
  14. IndexedBD的一些心得(总结)
  15. android - DeviceOwner: Trying to set device owner but device is already provisioned
  16. DITHER 抖动算法
  17. 汇编INT中断和I/O指令【获取主板时钟】
  18. redis的安装教程(单机、win10)
  19. AD切换2D,3D,旋转模型
  20. 微信红包封面免费送!!!

热门文章

  1. 塔防类游戏 ——简单的角色合并逻辑示例
  2. 导出IE浏览器配置的注册表信息 IE设置的注册表相关信息以及修改方法
  3. 洛谷P5708 【深基2.习2】三角形面积__C++描述
  4. Android开发一个简单的交互式App
  5. 高并发设计的技术方案
  6. 【粤教版必修二《信息系统与社会》】知识总结与题目分析
  7. WIN7 通过4G模块 拨号上网过程
  8. CF364D Ghd
  9. 地铁刷手机 android版,北京地铁全线支持刷安卓手机乘车 附攻略!
  10. html 左侧固定导航栏,前端布局-固定导航栏与侧边栏