python多元线性回归实例_关于多元线性回归分析——PythonSPSS
原始数据在这里
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相关推荐
- python多元线性回归实例_利用Python进行数据分析之多元线性回归案例
线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量).例如,餐厅根据每天的营业数据(包括菜谱价格.就餐人数.预定人数.特价菜折扣等)预测就餐规 ...
- python多元线性回归实例_Python机器学习多元线性回归模型 | kTWO-个人博客
前言 在上一篇文章<机器学习简单线性回归模型>中我们讲解分析了Python机器学习中单输入的线性回归模型,但是在实际生活中,我们遇到的问题都是多个条件决定的问题,在机器学习中我们称之为多元 ...
- python 多元线性回归_Python机器学习,多元线性回归分析问题
@Author:润森,Runsen,公众号:润森笔记 什么是多元线性回归 在回归分析中,如果有两个或两个以上的自变量,就称为多元回归.**事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组 ...
- 【定量分析、量化金融与统计学】R语言:多元线性回归实例
今天来做一个R语言的多元线性回归的实例: 题目是这样的: 练习:度假村排名 旅游胜地,专门介绍高级度假和住宿的杂志<Spas>在"读者选择"评选的世界20家独立海滨精品 ...
- python数据导入spss_关于多元线性回归分析——PythonSPSS
原始数据在这里 1.观察数据 首先,用Pandas打开数据,并进行观察. import numpy import pandas as pd import matplotlib.pyplot as pl ...
- 大数据(041)机器学习【多元线性回归实例】
一.前言 保险公司对个人投保时或根据历史数据生成的模型来计算个人保费,那么本次我们就以这个模型的求解过程为例来实践下多元线性回归. 二.数据&简单分析 我们已经获取到了一些数据(模拟数据),文 ...
- spss多元线性回归散点图_案例分析 | 多元线性回归及SPSS操作
一.案例 案例来源:中华护理杂志2018年3期 关于护士触摸舒适感的现状调查及其影响因素分析. 方法:2017年3月-5月,采用方便抽样的方法选取某市3所三级甲等医院的100名护士,采用护士一般资料调 ...
- 西瓜书——多元线性回归(知识点:多元实值函数凹凸性的证明)
在多元线性回归部分,西瓜书的省略实在是太多了,有时候会让读者很无奈.这篇博客便针对这些问题进行详细的解答,希望对大家理解西瓜书有帮助. 在多元线性回归这一章节中,或许是囿于篇幅,西瓜书中(1)没有解释 ...
- python 情感分析实例_情感分析实例
以下的样本代码用Pyhton写成,主要使用了scrapy, sklearn两个库. 所以,什么是情感分析(Sentiment Analysis)? 情感分析又叫意见挖掘(Opinion Mining) ...
最新文章
- PPDE英雄帖!广邀全球开发者执开源之桨,汇百川成海
- linux线程关闭信号,Linux/UNIX用同步方法处理异步信号
- VMware View 5.2 安装实施七 安装Web Client
- 二进制转换为八进制-栈方式实现
- Qt 5.12 LTS(长期维护版本)中Qt Quick的性能改进
- JPA模糊查询(表中的某些数据)
- Access导入文本文件的Schema.ini文件格式
- 【LeetCode笔记】34. 在排序数组中查找元素的第一个和最后一个位置(Java、二分)
- es 删除重复数据_怎么标识并删除SPSS数据库里的“重复个案”?
- m 文件 dll matlab 中调用_利用USO服务将特权文件写入武器化
- SSM订单数据管理系统
- 怎么把cad的图导入ps_怎么将cad图形导入ps中处理
- Win300英雄服务器不显示,win7系统玩不了300英雄的解决方法
- codeMirror使用记录
- cesium--添加模型
- GTP与MBR硬盘分区区别(UEFI介绍)
- Could not reserve enough space for 2097152KB object heap 解决
- Git版本控制中的文件的四种状态
- 如何打开SAR 文件 1
- 护士副高需要计算机考试吗,护士晋升副高考试,人机对话,改卷标准是什么。主要是多选题,是否要完全答对才给分?...
热门文章
- r 选取从小到大的数据_r 选取数据库
- css连续选取几个li_CSS高级选择器:nth-child()应用大全
- android设置window背景颜色,Android WindowManager 背景暗化
- lambda函数if_Python中lambda的使用,与它的三个好基友介绍
- python day33
- Java第六次作业--异常处理和Java类集
- GOF23设计模式之单例模式
- easyui datagrid 动态绑定列
- Java入门:JDK与Eclipse之类的集成开发工具的关系
- ModuleNotFoundError: No module named ‘sklearn‘ 解决办法