数据分析实战 | 泊松回归——航班数据分析

目录

一、数据及分析对象

二、目的及分析任务

三、方法及工具

四、数据读入

五、数据理解

六、数据准备

七、模型训练

八、模型评价


一、数据及分析对象

CSV文件:o-ring-erosion-only.csv

数据集链接:https://download.csdn.net/download/m0_70452407/88524654

该数据集给出了挑战者航天飞机的O型圈(O-Ring)数据,主要属性如下:

(1)Number of O-ring at risk on a given flight:航班上存在潜在风险的O形环数量。

(2)Number experiencing thermal distress:出现热损伤的O形环数量。

(3)Launch temperature(degrees F):发射温度(华氏度)。

(4)Leak-check pressure(psi):捡漏压力(psi)。

(5)Temporal order of flight:航班时序。

二、目的及分析任务

理解机器学习方法在数据分析中的应用——采用泊松回归方法进行回归分析。

(1)以全部记录为训练集进行泊松回归建模。

(2)对模型进行假设检验和可视化处理,验证泊松回归建模的有效性。

三、方法及工具

Python语言及其第三方包pandas、NumPy和statsmodels

四、数据读入

由于原数据没有表头,因此在读取CSV文件时通过names参数手动生成表头。

import pandas as pd
df_erosion=pd.read_csv("D:\\Download\\JDK\\数据分析理论与实践by朝乐门_机械工业出版社\\第3章 回归分析\\o-ring-erosion-only.csv",
                      names=['Number of O-ring at risk on a given flight','Number experiencing thermal distress',
                            'Launch temperature(degrees F)','Leak-check pressure(psi)','Temporal order of flight'])
df_erosion.head()

五、数据理解

对数据框df_erosion进行探索性分析:

df_erosion.describe()

其中,预测变量"Number experiencing thermal distress"的最大值为2,最小值为0,平均热损伤O形环数为0.391。

除了describe()方法,还可以调用shape属性和columns属性对数据框进行探索性分析。

df_erosion.shape
(23, 5)
df_erosion.columns
Index(['Number of O-ring at risk on a given flight',
       'Number experiencing thermal distress', 'Launch temperature(degrees F)',
       'Leak-check pressure(psi)', 'Temporal order of flight'],
      dtype='object')

绘制直方图来查看因变量“Number experiencing thermal distress”数据的连续性,通过调用mayplotlib.pyplot包中数据框(DataFrame)的hist()方法创建频数直方图。

import matplotlib.pyplot as plt
plt.rcParams['font.family']="simHei"   #汉字显示 字体设置
plt.hist(df_erosion['Number experiencing thermal distress'],
        bins=10,
        facecolor="blue",
        edgecolor="black",
        alpha=0.7)
plt.xlabel('区间')
plt.ylabel('频数')
plt.title("因变量‘Number experiencing thermal distress’频数分布直方图")

通过调用NumPy包中数据框(DataFrame)的mean()方法和var()方法查看因变量“Number experiencing thermal distress”的均值和方差。

import numpy as np
print(np.mean(df_erosion['Number experiencing thermal distress']))
print(np.var(df_erosion['Number experiencing thermal distress']))
0.391304347826087
0.41209829867674863

可以看到方差约等于平均值,避免了在泊松分布中发生过度分散或分散不足的情况。泊松分布的一个重要特征是均值和方差相等,称为分散均衡。只有分散均衡的数据才能使用泊松分布模型。均值小于方差称为分散过度,所有分布向左侧倾斜,数值较小的数据出现概率较高。均值大于方差的称为分散不足。

六、数据准备

进行泊松回归分析前,应准备好模型所需的特征矩阵(X)和目标向量(y)。这里采用Python的统计分析包statsmodels进行自动你类型转换,数据对象y即可使用。若采用其他包(如scikit-learn等需要采用np.ravel()方法对y进行转换)。

原始数据集中列名过长,需要对其重新命名。同时遵从习惯调整特征顺序,将因变量调至最后一列。

df_erosion.rename(columns={'Number of O-ring at risk on a given flight':'num_rings',
                          'Launch temperature(degrees F)':'temperature',
                          'Leak-check pressure(psi)':'pressure',
                          'Number experiencing thermal distress':'num_distress',
                          'Temporal order of flight':'order'},inplace=True)
order=['num_rings','temperature','pressure','order','num_distress']
df_erosion=df_erosion[order]
df_erosion.head()

七、模型训练

以航班上存在潜在风险的O形环数量num_rings、发射温度temperature、捡漏压力pressure和航班时许order作为自变量,飞行中热损伤O形环的数量num_distress作为因变量对数据进行泊松回归建模。这里采用的实现方式为调用Python的统计分析包statsmodels中的GLM()方法进行建模分析。

import statsmodels.formula.api as smf

statsmodels.GLM()方法的输入有3个,第一个形参为formula,具体形式为y~x,在这里即为“num_distress~num_rings+temperature+pressure+order"。第二个参数是模型训练所用的数据集df_erosion。最后一个参数为创建GLM模型所用的Poisson()模型。这里通过调用NumPy库的column_stack()方法对各自变量矩阵按列合并创建特征矩阵X。

x=np.column_stack((df_erosion['num_rings'],df_erosion['temperature']
                   ,df_erosion['pressure'],df_erosion['order']))

在自变量x和因变量y上使用GLM()方法进行泊松回归。

import statsmodels.api as sm
glm=smf.glm('num_distress~num_rings+temperature+pressure+order'
            ,df_erosion,family=sm.families.Poisson())

然后获取拟合结果,并将回归拟合的摘要全部打印出来。

results=glm.fit()
print(results.summary())
   Generalized Linear Model Regression Results                  
==============================================================================
Dep. Variable:           num_distress   No. Observations:                   23
Model:                            GLM   Df Residuals:                       19
Model Family:                 Poisson   Df Model:                            3
Link Function:                    Log   Scale:                          1.0000
Method:                          IRLS   Log-Likelihood:                -15.317
Date:                Sat, 11 Nov 2023   Deviance:                       15.407
Time:                        12:45:43   Pearson chi2:                     23.4
No. Iterations:                     5   Pseudo R-squ. (CS):             0.2633
Covariance Type:            nonrobust                                         
===============================================================================
                  coef    std err          z      P>|z|      [0.025      0.975]
-------------------------------------------------------------------------------
Intercept       0.0984      0.090      1.094      0.274      -0.078       0.275
num_rings       0.5905      0.540      1.094      0.274      -0.468       1.649
temperature    -0.0883      0.042     -2.092      0.036      -0.171      -0.006
pressure        0.0070      0.010      0.708      0.479      -0.012       0.026
order           0.0115      0.077      0.150      0.881      -0.138       0.161
===============================================================================

第二部分的coef列所对应的Intercept、num_rings、temperature、pressure和order就是计算出的回归模型中各自变量的系数。

除了读取回归摘要外,还可以调用params属性查看拟合结果。

results.params
Intercept      0.098418
num_rings      0.590510
temperature   -0.088329
pressure       0.007007
order          0.011480
dtype: float64

八、模型评价

通过模型摘要可以看到,只有自变量temperature的p值小于0.05,通过了T检验。这意味着其他解释变量在控制temperature的前提下,对因变量的影响不显著。

建立的泊松回归模型如下:

num\_distress=exp(0.098418+0.590510\times num\_rings-0.88329\times temperature+0.007007\times pressure+0.11480\times order)

模型的预测结果如下:

df_erosion['predict_result']=results.predict(df_erosion)
df_erosion['predict_result']=df_erosion['predict_result'].apply(lambda x:round(x,3))
df_erosion

最后采用均方根误差(RMSE)来评估模型预测结果。

from sklearn.metrics import mean_squared_error
print("RMSE:",np.sqrt(mean_squared_error(df_erosion.predict_result,df_erosion.num_distress)))
RMSE: 0.4895481057323038

 此结果说明该模型的均方根误差为0.490,表明该模型有一定的预测能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全基础之php开发文件上传的实现

前言 php是网络安全学习里必不可少的一环,简单理解php的开发环节能更好的帮助我们去学习php以及其他语言的web漏洞原理 正文 在正常的开发中,文件的功能是必不可少,比如我们在论坛的头像想更改时就涉及到文件的上传等等文件功能。但也会出…

Leetcode刷题详解——单词搜索

1. 题目链接:79. 单词搜索 2. 题目描述: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的…

基于ubuntu 22, jdk 8x64搭建图数据库环境 hugegraph--google镜像chatgpt

基于ubuntu 22, jdk 8x64搭建图数据库环境 hugegraph download 环境 uname -a #Linux whiltez 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64 x86_64 GNU/Linuxwhich javac #/adoptopen-jdk8u332-b09/bin/javac which java #/adoptopen-jdk8u33…

开源软件有漏洞,作者需要负责吗?是的——作者责任与社会共同关注开源

近日,禅道作者在开源中国发布的一篇文章引起了众多同行的围观,原因是该文章分享了一个开源协议在中国面临的 bug!开源软件许可协议通常会表明作者不对用户使用该开源软件所造成的任何问题负责。但是这种条款,在中国,是…

Labview的分支判断

和其他的编程语言一样的。都会有switch,case, if ,else; 再combo box中实现 再后台程序中对应的写上逻辑就好了。

Android 解决CameraView叠加2个以上滤镜拍照黑屏的BUG (一)

1. 前言 这段时间,在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位,在项目前期,的确为我们节省了不少时间。 但随着项目持续深入,对于CameraView的使用进入深水区,逐…

Linux系统初步了解

Linux系统由4个主要部分组成:内核、Shell、文件系统和应用程序。 本专题主要是围绕这四个来展开的。 POSIX(可移植操作系统接口)定义了操作系统应该为应用程序提供的标准接口,其意愿是获得源码级别的软件可移植性。所以Linux选择…

elemenui的Upload上传整合成数组对象

1. 普通直接上传 <el-upload action"" :before-upload"doBeforeUpload"><el-button type"success" size"mini">导入</el-button></el-upload> methods:{doBeforeUpload(file) {let reader new FileReader(…

Postman基本页面和请求/响应页签介绍

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 一、Postman的界面介绍 Home主页、Workspace工作空间、Collections集合、Environments环境变量、Mock Server虚拟服务器、Mo…

GEE:计算有效像素占比(统计有效像素数量、像素总数)

作者:CSDN @ _养乐多_ 在GEE中进行遥感数据处理的时候,经常会由于去云,导致影像出现空洞,只有部分像素可用,或者在进行特殊处理时,只对有效像素进行处理,但是我们不知道有效像素数量和占比,无法对结果做出准确的分析。这个时候就需要统计有效像素数量占比。 本文记录…

智链引擎CEO李智:游戏化增长中台,让裂变营销快十倍、便宜十倍、好十倍丨数据猿专访...

大数据产业创新服务媒体 ——聚焦数据 改变商业 双十一电商大战一触即发&#xff0c;各个垂类的App也都希望能够借力双十一营销季&#xff0c;实现用户和营收双增长。MarTech在这个风口上&#xff0c;又成为2B赛道关注的焦点。 业内人士指出&#xff0c;MarTech的引入催生营销…

【MySQL基本功系列】第二篇 InnoDB存储引擎的架构设计

通过上一篇文章&#xff0c;我们简要了解了MySQL的运行逻辑&#xff0c;从用户请求到最终将数据写入磁盘的整个过程。当数据写入磁盘时&#xff0c;存储引擎扮演着关键的角色&#xff0c;它负责实际的数据存储和检索。在MySQL中&#xff0c;有多个存储引擎可供选择&#xff0c;…

HCIA-DHCP+DHCP中继

DHCPDHCP中继 实验拓扑配置步骤第一步 配置Eth-Trunk聚合链路&二层VLAN第二步 配置IP地址第三步 配置DHCPDHCP中继 配置验证查看PC1 PC2是否正确的获得了IP地址 实验拓扑 配置步骤 第一步 配置Eth-Trunk聚合链路&二层VLAN SW1 sysname SW1 # undo info-center enabl…

Linux 内核启动流程

目录 链接脚本vmlinux.ldsLinux 内核启动流程分析Linux 内核入口stext__mmap_switched 函数start_kernel 函数rest_init 函数init 进程 看完Linux 内核的顶层Makefile 以后再来看Linux 内核的大致启动流程&#xff0c;Linux 内核的启动流程要比uboot 复杂的多&#xff0c;涉及到…

SparkAi创作系统ChatGPT网站源码+详细搭建部署教程+AI绘画系统+支持GPT4.0+Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

VulnHub Nullbyte

一、信息收集 1.nmap扫描 arp-scan -l扫描内网存活主机 ┌──(root&#x1f480;kali)-[~/桌面] └─# nmap -sS -A -p- 192.168.103.201/24 -sS 半扫描 -A 扫描详细信息 -p- 扫描全端口发现开放了80、111、777、50978端口 且发现777端口开放了ssh服务&#xff0c;说明他把…

深度学习之各种配置环境

如何使用python进行深度学习&#xff0c;我们需要配置相应的环境 第一步&#xff1a;先安装python python的官网地址&#xff1a;https://www.python.org/ 点进去&#xff0c;点击 Downloads&#xff0c;然后点击 Windows 等待下载完成&#xff0c;安装步骤请参考下文&#x…

主题模型LDA教程:一致性得分coherence score方法对比(umass、c_v、uci)

文章目录 主题建模潜在迪利克雷分配&#xff08;LDA&#xff09;一致性得分 coherence score1. CV 一致性得分2. UMass 一致性得分3. UCI 一致性得分4. Word2vec 一致性得分5. 选择最佳一致性得分 主题建模 主题建模是一种机器学习和自然语言处理技术&#xff0c;用于确定文档…

Linux程序的地址空间

Linux程序的地址空间 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容深刻理解了什么程序或者进程的地址…

【性能测试】非GUI模式Jemter压测+TPS性能拐点详细,一篇带你打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 非GUI模式执行Jem…