原始数据在这里

1.观察数据

首先,用Pandas打开数据,并进行观察。

import numpy

import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

data = pd.read_csv('Folds5x2_pp.csv')

data.head()

会看到数据如下所示:

这份数据代表了一个循环发电厂,每个数据有5列,分别是:AT(温度), V(压力), AP(湿度), RH(压强), PE(输出电力)。我们不用纠结于每项具体的意思。

我们的问题是得到一个线性的关系,对应PE是样本输出,而AT/V/AP/RH这4个是样本特征, 机器学习的目的就是得到一个线性回归模型,即: PE=θ0+θ1∗AT+θ2∗V+θ3∗AP+θ4∗RH 而需要学习的,就是θ0,θ1,θ2,θ3,θ4这5个参数。

接下来对数据进行归一化处理:

data = (data - data.mean())/data.std()

因为回归线的截距θ0是不受样本特征影响的,因此我们在此可以设立一个X0=1,使得回归模型为:

PE=θ0*X0+θ1∗AT+θ2∗V+θ3∗AP+θ4∗RH

将方程向量化可得:

PE = hθ(x) = θx (θ应转置)

2.线性回归

在线性回归中,首先应建立 cost function,当 cost function 的值最小时所取得θ值为所求的θ。

在线性回归中,Cost function如下所示:

因此,可以在Python中建立函数求损失方程:

def CostFunction(X,y,theta):

inner = np.power((X*theta.T)-y,2)

return np.sum(inner)/(2*len(X))

然后,设初始θ为=[0,0,0,0,0],可得到最初的J(θ)值为0.49994774247491858,代码如下所示

col = data.shape[1]

X = data.iloc[:,0:col-1]

y = data.iloc[:,col-1:col]

X = np.matrix(X.values)

y = np.matrix(y.values)

theta = np.matrix(np.array([0,0,0,0,0]))

temp = np.matrix(np.zeros(theta.shape))

CostFunction(X,y,theta)

接下来,有两种方法可以使用。1.梯度下降法(gradient descent)和 2.最小二乘法(normal equation)。在此我们使用梯度下降法来求解。

梯度下降法是求得J对θ的偏导数,通过设置步长,迭代使J(θ)逐步下降,从而求得局部最优解。

公式如下所示:

j:特征编号

m:样本编号

我们可以在Python中写出计算迭代后的θ和J(θ)

def gradientDescent(X,y,theta,alpha,iters):

temp = np.matrix(np.zeros(theta.shape))

parameters = int(theta.ravel().shape[1])

cost = np.zeros(iters)

for i in range(iters):

error = (X*theta.T)-y

for j in range(parameters):

term = np.multiply(error,X[:,j])

temp[0,j] = theta[0,j] - (alpha/len(X))*np.sum(term)

theta = temp

cost[i] = CostFunction(X,y,theta)

return theta,cost

在此,我设置初始的α为0.1,可求得迭代1000次后θ0,θ1,θ2,θ3,θ4的值分别是:

-5.22080706e-14,-8.63485491e-01,-1.74182863e-01,2.16058120e-02,-1.35205248e-01

此时 J(θ)的值为0.0379648。

通过,可视化J(θ)和迭代次数可以发现,J(θ)收敛的非常快。

画图观察预测值和损失值,距离直线约近说明损失越小:

predicted = X*g.T

predicted = predicted.flatten().A[0]

y_f= y.flatten().A[0]

fig, ax = plt.subplots()

ax.scatter(y_f,predicted)

ax.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4)

ax.set_xlabel('Measured')

ax.set_ylabel('Predicted')

plt.show()

3.sckit-learn

因为J(θ)收敛的太快了…所以我又用sckit-learn和SPSS验证了一下。

先看sckit-learn,在sklearn中,线性回归是使用的最小二乘法而不是梯度下降法,用起来也十分的简单。

代码如下:

from sklearn import linear_model

model = linear_model.LinearRegression()

model.fit(X, y)

打印出θ值后发现和梯度下降法算出来的相差无几,θ0,θ1,θ2,θ3,θ4的值分别是:

0,-0.86350078,-0.17417154,0.02160293,-0.13521023

4.SPSS

在看看SPSS

同样先将数据标准化后进行线

然后进行线性回归分析得到结果:

嘛…和前面两种方法的结果也差不多…就这样吧。

以上这篇关于多元线性回归分析——Python&SPSS就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2020-02-23

python多元线性回归实例_关于多元线性回归分析——PythonSPSS相关推荐

  1. python多元线性回归实例_利用Python进行数据分析之多元线性回归案例

    线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量).例如,餐厅根据每天的营业数据(包括菜谱价格.就餐人数.预定人数.特价菜折扣等)预测就餐规 ...

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

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

  3. python 多元线性回归_Python机器学习,多元线性回归分析问题

    @Author:润森,Runsen,公众号:润森笔记 什么是多元线性回归 在回归分析中,如果有两个或两个以上的自变量,就称为多元回归.**事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组 ...

  4. 【定量分析、量化金融与统计学】R语言:多元线性回归实例

    今天来做一个R语言的多元线性回归的实例: 题目是这样的: 练习:度假村排名 旅游胜地,专门介绍高级度假和住宿的杂志<Spas>在"读者选择"评选的世界20家独立海滨精品 ...

  5. python数据导入spss_关于多元线性回归分析——PythonSPSS

    原始数据在这里 1.观察数据 首先,用Pandas打开数据,并进行观察. import numpy import pandas as pd import matplotlib.pyplot as pl ...

  6. 大数据(041)机器学习【多元线性回归实例】

    一.前言 保险公司对个人投保时或根据历史数据生成的模型来计算个人保费,那么本次我们就以这个模型的求解过程为例来实践下多元线性回归. 二.数据&简单分析 我们已经获取到了一些数据(模拟数据),文 ...

  7. spss多元线性回归散点图_案例分析 | 多元线性回归及SPSS操作

    一.案例 案例来源:中华护理杂志2018年3期 关于护士触摸舒适感的现状调查及其影响因素分析. 方法:2017年3月-5月,采用方便抽样的方法选取某市3所三级甲等医院的100名护士,采用护士一般资料调 ...

  8. 西瓜书——多元线性回归(知识点:多元实值函数凹凸性的证明)

    在多元线性回归部分,西瓜书的省略实在是太多了,有时候会让读者很无奈.这篇博客便针对这些问题进行详细的解答,希望对大家理解西瓜书有帮助. 在多元线性回归这一章节中,或许是囿于篇幅,西瓜书中(1)没有解释 ...

  9. python 情感分析实例_情感分析实例

    以下的样本代码用Pyhton写成,主要使用了scrapy, sklearn两个库. 所以,什么是情感分析(Sentiment Analysis)? 情感分析又叫意见挖掘(Opinion Mining) ...

最新文章

  1. PPDE英雄帖!广邀全球开发者执开源之桨,汇百川成海
  2. linux线程关闭信号,Linux/UNIX用同步方法处理异步信号
  3. VMware View 5.2 安装实施七 安装Web Client
  4. 二进制转换为八进制-栈方式实现
  5. Qt 5.12 LTS(长期维护版本)中Qt Quick的性能改进
  6. JPA模糊查询(表中的某些数据)
  7. Access导入文本文件的Schema.ini文件格式
  8. 【LeetCode笔记】34. 在排序数组中查找元素的第一个和最后一个位置(Java、二分)
  9. es 删除重复数据_怎么标识并删除SPSS数据库里的“重复个案”?
  10. m 文件 dll matlab 中调用_利用USO服务将特权文件写入武器化
  11. SSM订单数据管理系统
  12. 怎么把cad的图导入ps_怎么将cad图形导入ps中处理
  13. Win300英雄服务器不显示,win7系统玩不了300英雄的解决方法
  14. codeMirror使用记录
  15. cesium--添加模型
  16. GTP与MBR硬盘分区区别(UEFI介绍)
  17. Could not reserve enough space for 2097152KB object heap 解决
  18. Git版本控制中的文件的四种状态
  19. 如何打开SAR 文件 1
  20. 护士副高需要计算机考试吗,护士晋升副高考试,人机对话,改卷标准是什么。主要是多选题,是否要完全答对才给分?...

热门文章

  1. r 选取从小到大的数据_r 选取数据库
  2. css连续选取几个li_CSS高级选择器:nth-child()应用大全
  3. android设置window背景颜色,Android WindowManager 背景暗化
  4. lambda函数if_Python中lambda的使用,与它的三个好基友介绍
  5. python day33
  6. Java第六次作业--异常处理和Java类集
  7. GOF23设计模式之单例模式
  8. easyui datagrid 动态绑定列
  9. Java入门:JDK与Eclipse之类的集成开发工具的关系
  10. ModuleNotFoundError: No module named ‘sklearn‘ 解决办法