多元统计分析 多元线性回归 python代码实现 简单线性回归

因变量Y(或Y1 , …,Yp )与x1 ,x2 ,…,xm的回归方程:

Y=f(x_{1},x_{2},...,x_{m})=a_{0}+a_{1}x_{1}+a_{2}x_{2}+...+a_{m}x_{m}+\varepsilon

数据导入与清洗

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegressionpd_data = pd.read_csv("xxxx.csv")   #可用read_csv导入数据

利用numpy和pandas对数据进行操作

利用matplotlib将数据图像化

利用sklearn导入数据集训练和模型

多元线性回归


#清洗不需要的数据
new_pd_data = pd_data.ix[:,1:]
#数据描述
print(new_pd_data.describe())
#缺失值检验
print(new_pd_data[new_pd_data.isnull()==True].count())#R方检测
#决定系数r平方
#对于评估模型的精确度
#y误差平方和 = Σ(y实际值 - y预测值)^2
#y的总波动 = Σ(y实际值 - y平均值)^2
#有多少百分比的y波动没有被回归拟合线所描述 = SSE/总波动
#有多少百分比的y波动被回归线描述 = 1 - SSE/总波动 = 决定系数R平方
#对于决定系数R平方来说
#1) 回归线拟合程度:有多少百分比的y波动刻印有回归线来描述(x的波动变化)
#2)值大小:R平方越高,回归模型越精确(取值范围0~1),1无误差,0无法完成拟合

 数据清洗、预测等与简单线性回归类似

简单线性回归

创建简单模型

in

#创建数据集
examDict  = {'worktime':[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],'output':[10,22,13,43,20,22,33,50,62,48,55,75,62,73,81,76,64,82,90,93]}#转换为DataFrame的数据格式
examDF = pd.DataFrame(examDict)

out

  worktime  output
0       0.50      10
1       0.75      22
2       1.00      13
3       1.25      43
4       1.50      20
5       1.75      22
6       1.75      33
7       2.00      50
8       2.25      62
9       2.50      48
10      2.75      55
11      3.00      75
12      3.25      62
13      3.50      73
14      4.00      81
15      4.25      76
16      4.50      64
17      4.75      82
18      5.00      90
19      5.50      93

 图像化

in

#绘制散点图
plt.scatter(examDF.worktime,examDF.output,color = 'g',label = "Exam Data")#添加图的标签(x轴,y轴)
plt.xlabel("worktime")
plt.ylabel("output")#显示图像
plt.show()

out

 pandas中可反应数据间相关性的函数obj.corr()       (参数为空时,默认使用的参数为pearson)

corr( )有三种用法:

1.pearson:衡量两个数据集合是否在一条线上面

                   即针对线性数据的相关系数计算,针对非线性数据便会有误差。

2.spearman:非线性的,非正态分析的数据的相关系数

3.kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正态分布的数据

in

rDF = examDF.corr(method = "pearson")
print(rDF)

out 

                     worktime    output
worktime     1.000000     0.923985
output          0.923985     1.000000

划分训练集和测试集

in

#划分x,y
exam_X=examDF[["worktime"]] 
exam_Y= examDF[["output"]]#将原数据集拆分训练集和测试集
X_train,X_test,Y_train,Y_test = train_test_split(exam_X,exam_Y,train_size=.8)
#X_train为训练数据,X_test为测试数据,exam_X为样本特征,exam_y为样本标签,train_size 训练数据占比# print("原始数据特征:",exam_X.shape,
#       ",训练数据特征:",X_train.shape,
#       ",测试数据特征:",X_test.shape)# print("原始数据标签:",exam_Y.shape,
#       ",训练数据标签:",Y_train.shape,
#       ",测试数据标签:",Y_test.shape)#线性回归模型
model = LinearRegression()            #线性回归模型
model.fit(X_train,Y_train)            #模型的成员函数fit(X,y)以数组X和y为输入
a = model.intercept_                       #截距   判断是否有截据,如果没有则直线过原点
b = model.coef_                            #回归系数   模型的成员变量,存储线性模型的系数
#训练数据预测值
y_train_pred = model.predict(X_train)       #预测
score = model.score(X_test,Y_test)         #可决系数   返回对于以X为samples,以y为target的预测效果评分

 out

截距: [9.19829213]
回归系数: [[15.80379307]]
预测: [[48.55501931]
 [31.77509653]
 [44.36003861]
 [35.97007722]
 [23.38513514]
 [90.50482625]
 [82.11486486]
 [65.33494208]
 [56.94498069]
 [61.13996139]
 [73.72490347]
 [35.97007722]
 [14.99517375]
 [52.75      ]
 [98.89478764]
 [27.58011583]]
评分: 0.6983823980938839

原始数据特征: (20, 1) ,训练数据特征: (16, 1) ,测试数据特征: (4, 1)
原始数据标签: (20, 1) ,训练数据标签: (16, 1) ,测试数据标签: (4, 1)

train_test_split函数
train_test_split(train_data,train_target,test_size=0.4, random_state=0,stratify=y_train)

train_data:所要划分的样本特征集

train_target:所要划分的样本结果

                  ①若为浮点时,表示训练集占总样本的百分比

                 ②若为整数时,表示训练样本的样本数

                 ③若为None时,train_size自动被设置成0.75

test_size:样本占比(可以为浮点、整数或None,默认为None)

                 ①为浮点,表示测试集占总样本的百分比

                 ②为整数,表示测试样本的样本数

                 ③为None,test_size自动设置成0.25

random_state:随机数种子(该组随机数的编号,在需要重复试验的时候,保证得到一组

                       一样的随机数,比如填1,在其他参数一样的情况下所得随机数组是一样的)  

stratify:保持split前类的分布,=X就是按照X中的比例分配 ,=y就是按照y中的比例分配 

为None,划分出来的测试集或训练集中,其类标签的比例是随机的

不为None,划分出来的测试集或训练集中,其类标签的比例同输入的数组中类标签的比例相同,可以用于处理不均衡的数据集

train-test散点图

in

 
#散点图
plt.scatter(X_train, Y_train, color="blue", label="train data")
plt.scatter(X_test, Y_test, color="yellow", label="test data")#添加图标标签
plt.legend(loc=2)
plt.xlabel("Hours")
plt.ylabel("Pass")
#显示图像
plt.show()

out 

最佳拟合线+测试数据散点图

in

#绘制最佳拟合线:标签用的是训练数据的预测值y_train_pred
plt.plot(X_train, y_train_pred, color='black', linewidth=3, label="best line")#测试数据散点图
plt.scatter(X_test, Y_test, color='red', label="test data")
plt.scatter(X_train, Y_train, color='green', label="train data")
#添加图标标签
plt.legend(loc=2)
plt.xlabel("worktime")
plt.ylabel("output")
#显示图像
plt.show()

out 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28234.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性回归数据分析

进入机器学习阶段后第一次接触线性回归,感觉线性回归其实就是通过有限的离散型数据,找到一条直线,使得尽可能多的离散点,分布在线附近的区域(理想状态是所有的点都在线上,但是一般是无法满足的)…

多元线性回归方差分析表理解

1.单因素一元方差分析的方法和案例: 例子: 案例的代码: X[533 580 525 600 570 650 500; %因数I [A,F]实验组CK标准 565 600 500 615 575 661 510; 525 575 510 590 565 643 513]; group{‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘CK’}; [p…

[转] R 逐步回归分析 AIC信息统计量

由于原作者写得太好了,所以直接转载的,不得不佩服 逐步回归分析是以AIC信息统计量为准则,通过选择最小的AIC信息统计量,来达到删除或增加变量的目的。 R语言中用于逐步回归分析的函数 step() drop1() add1() add1()函数…

数据分析02-线性回归

可分为线性回归分析和非线性回归分析。如果在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是…

线性回归t检验

原理 数据 以下是部分数据展示,蒸发为因变量,其它为自变量,求自变量与因变量相关系数及t值。 年份蒸发湿度温度降雨1990848.3672.4914.60839.261991810.6673.4913.601348.761992914.2669.4914.00626.761993665.6674.4913.601212.061994848…

多元线性回归中的F-test和T-test

1 举个例子 模型输出的p值检验为F检验 模型输入的p值检验为T检验 原理: 后续补充 先上代码2: import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression

多元线性回归超详细详解(一步一步手推公式)

上一篇我们详细的讲解了一元一次线性回归算法,今天我们接着上一篇,为大家讲解多元线性回归是怎么一回事。 何为多元?当我们的输入x只有一维属性时,我们称之为一元。就像我们判断人胖瘦,只需了解体重这一个属性&#x…

线性回归模型详解(Linear Regression)

目录 线性与非线性 线性回归 多重共线性 常用的回归模型评估指标 算法优缺点 算法实现 回归分析的主要算法包括: 线性回归(Linear Regression)逻辑回归(Logistic regressions)多项式回归(Polynomial Regression)逐步回归(Step Regress…

数据线性回归分析

目录 一、利用WPS进行线性回归分析 二、利用jupyter编程(不借助第三方库) 对数据进行线性回归分析 1、将数据文件上传(方便后续打开数据文件) 2、添加代码 ​编辑 3 、输出200组数据 4、输出2000组数据 5、利用pandas打开ex…

用ggplot2进行直线回归并添加回归方程和方差分析表

library(ggplot2) #加载ggplot2包 library(dplyr) #加载dplyr包 library(ggpmisc) #加载ggpmisc包mpg %>% ggplot(aes(x displ, y hwy)) geom_point(aes(color drv)) #以drv为分组设置点的颜色geom_smooth(method lm, formula y ~ x) #绘制回归直线stat_poly_eq(aes…

多元线性回归分析(Stata)

目录 一、回归分析的介绍与分类 二、多元线性回归模型的条件 1. 线性理解与内生性问题研究 2. 异方差问题 3. 多重共线性问题 一、回归分析的介绍与分类 回归分析的任务是:通过研究自变量X和因变量Y的关系,尝试去解释Y的形成机制,进而达…

一文轻松看懂线性回归分析的交互作用!

作者:丁点helper 来源:丁点帮你 前几天的文章,我们聚焦在回归分析,今天来看看在回归分析中常常要研究的一类难点问题——交互作用的探究。 交互(interaction),字面上不太好理解,但…

多元线性回归模型及stata实现:总论

多元线性回归模型及stata实现:总论 一、模型 Yβ0β1X1β2X2⋯βnXne Y: Dependent variable(因变量、应变量、反应变量、响应变量、被解释变量等)X1、X2⋯Xn:Independent variable(自变量、解释变量、控制变量&…

Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)

序 2023/02/09 晚 鉴于本篇文章收藏量比较多,那就给大家分享点在实际工作中使用频率最高的工作流命令吧。 场景如下(多人共同开发一个项目):我叫小明,参与了一个名为 chatGPT 的项目,这个 AI 最近很火,就以此作为例…

慕课前端售1299元的面试题【第二阶段】汇总 day05

上一篇链接 如果有看不懂的,别硬看,直接chatgpt,让它回答。 - 我的博客需要缩宽页面观看,图片无法均放,很抱歉。 1. 请说明 Ajax Fetch Axios 三者的区别? 1. 用 XMLHttpRequest 实现 Ajax function aja…

Javaweb复习之HTTPTomcatServelet

1.Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 JavaWeb就是用Java技术来解决相关web互联网领域的技术栈 1.2 JavaWeb技术栈 B/S 架构:Browser/Server,浏览器/服务器 架构模…

DDD领域驱动设计实战-DDD微服务代码结构

更多内容关注微信公众号:fullstack888 DDD并没有给出标准的代码模型,不同的人可能会有不同理解。按DDD分层架构的分层职责定义,在代码模型里分别为用户接口层、应用层、领域层和基础层,建立了 interfaces、application、domain 和…

windows10环境下安装docker、Ubuntu、gitlab、wsl2

一、概述 By星年 文章参考 常用命令参考:(为了方便复制命令都做了换行处理,可直接双击复制。) 进docker terminal: docker exec -it gitlab /bin/bash 查看容器列表: docker ps -a 查看镜像列表: docker images git…

AIGC的发展史:从模仿到创造,AI的创造性探索

在 AI时代,人工智能不再是简单的机器,而是一个具有无限创造力的创造者。AIGC的诞生是人工智能从模仿到创造的一种进步,也是对人类创造力的一种新探索。 而这种由AI生成的内容究竟是如何发展而来的呢?在本文中,我们将探…

如何解决微信支付回调:支付成功及支付失败都不进行任何操作(支付坑)

这几天都在用微信支付这块功能,不得不吐槽一下微信支付的小坑 关于微信提供JSAPI文档,本来想着他们写的开发文档,肯定是没有任何问题。 结果在开发测试中,支付完成后或者支付失败都没任何效果。 我已经在JS里面做了跳转&#xff0…