当前位置:   article > 正文

R语言航班延误影响预测分析:lasso、决策树、朴素贝叶斯、QDA、LDA、缺失值处理、k折交叉验证...

r做lasso回归k折交叉 lars包

全文链接:http://tecdat.cn/?p=32760

航班延误是航空公司、旅客和机场管理方面都面临的一个重要问题。航班延误不仅会给旅客带来不便,还会对航空公司和机场的运营产生负面影响点击文末“阅读原文”获取完整代码数据)。

相关视频

因此,对航班延误的影响因素进行预测分析,对于航空公司、旅客和机场管理方面都具有重要意义。

本文通过对航班数据进行分析,帮助客户使用lasso变量筛选、决策树、朴素贝叶斯、QDA、LDA等方法,对航班延误的影响因素进行预测分析。同时,本文还对缺失值进行处理,并使用k折交叉验证对模型进行评估。

数据来源和预处理

本文所使用的数据集为航班数据集。数据集中包括了航班号、起飞时间、到达时间、起飞机场、到达机场、航班延误等信息。

  1. data=read.table("12_months_dataFinal.csv")
  2. head(data)

3e1218cc0529fa7a53189421af887496.png

aac3269b6facac5e63779e1e79ad2459.png

c962360414afa01f4241b2c41828511d.png

c6186e52b14b0c7973fa995ba8e2b58e.png

colnames(data)

da509a8cc696e4aee63c7cc8325dd5bf.png

在审查数据之后,有几个方面被认为对航班延误有影响。

1.航空公司:航空公司,尾号和航班号。

2.时间:季度、月和日。

3.操作:承运人,尾号和航班号。

4.地理:起源机场和目的地机场。

选择一些变量做个图看一下变化趋势

ef97c46943b98a3b229e8e95f447c7de.png

c7bdb02cb79dd2e13df730880262d30e.png

b15ade1988bdc3870560f4a8d6df340b.png

5605b03c7de1366feb6a13c25855ddb0.png

bc06b224d80529b4d454fe7ca24d2490.png


点击标题查阅往期内容

8ace7b2acf838418cf86f352c9b7173f.png

PYTHON链家租房数据分析:岭回归、LASSO、随机森林、XGBOOST、KERAS神经网络、KMEANS聚类、地理可视化

outside_default.png

左右滑动查看更多

outside_default.png

01

b535a3ddc577ef7705fe5c922c8e8af5.png

02

8839aae6a7bc8470cdcc4506c7f480c3.png

03

5a0e1501038f63890f918bbc8e67fcbb.png

04

b6625950fd67b4d00eea8913b43ccd55.png

因变量为:ARR_DELAY

分别采用三种方法对空值进行处理

在进行数据分析之前,需要对数据进行预处理。本文采用了如下方法进行数据预处理:

(1)删除法

data1=na.omit(data)

99d29775256d4501a83b3b144de5d022.png

(2)平均值补缺

data2[index,i]=mean(na.omit(data[,i]))

bb2a34aedf12f93b9757eea583771791.png

(3)多重补插法进行补缺。

completedData <- complete(tempData,1)

方法

本文使用了如下方法对航班延误的影响因素进行预测分析:

变量筛选

使用lasso算法进行筛选变量

使用lasso算法进行筛选变量是指在统计学和机器学习中,使用一种叫做Lasso(Least Absolute Shrinkage and Selection Operator)的算法来进行特征选择的过程。Lasso算法通过对数据进行正则化,将某些特征的系数缩小至0,从而实现对特征的筛选和降维。这样可以避免过拟合和提高模型的泛化能力,同时还可以提高模型的解释性和可解释性。Lasso算法在数据挖掘、生物信息学、金融、图像处理等领域都有广泛的应用。

xmat <- model.matrix( ARR\_DELAY\~. -DEP\_DELAY- DEP\_DEL15-ARR\_DEL15 , dat

建立lasso模型

cv.lasso <- cv.glmn

86187016f5cdb2915e92f4e12ba17be4.png


点击标题查阅往期内容

7366cb0d81b36581b1808c49a19647ce.png

高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据

outside_default.png

左右滑动查看更多

outside_default.png

01

9608a795a1b05bd011ede38806b02ca2.png

02

b2511ca1f44699227654d569d4739071.png

03

6aa60a9751acade2fa863468eb85eb32.png

04

20f7b3dc8e846a4f0d2b4062380e13e3.png

coef(cv.lasso

4a26be536d4479e4c8f1c082659333ac.png

根据lasso筛选出最优的变量

Lasso(Least Absolute Shrinkage and Selection Operator)是一种用于特征选择和回归分析的统计方法。它可以通过对输入数据进行正则化来减少模型的复杂度,并且可以将一些不重要的特征的权重缩小甚至归零,从而达到特征筛选的目的。

在Lasso中,通过调整正则化参数λ的大小,可以控制模型的复杂度和特征选择的程度。当λ越大时,模型的复杂度越小,特征选择的程度越高。因此,可以通过交叉验证等方法来选择最优的λ值,进而筛选出最优的变量。

简而言之,通过Lasso方法筛选出最优的变量,就是在控制模型复杂度的前提下,选出对目标变量影响最大的特征,从而提高模型的预测能力。

variables<-row\.names(c)\[inds]

8dc15ce3fc1e4b06f240c221a7c6474a.png

筛选变量

data2=data2[,c(variables[-1],"ARR_DELAY")]

使用决策树填充缺失值

使用决策树填充缺失值是指在数据集中存在缺失值的情况下,使用决策树模型来预测缺失值并进行填充。具体地,可以将数据集中的所有特征和标签都作为输入,将含有缺失值的样本作为测试数据,利用已有的数据来训练决策树模型,然后使用训练好的模型来预测缺失值并进行填充。这种方法可以利用数据集中已有的信息来预测缺失值,从而提高数据的完整性和可用性。

m <- rpart(ARR_DELAY~  QUARTER+MONTH+DAY_OF_MONTH+DAY_OF_WEEK+UNIQUE_CA

5e34a64aeb72e5ba68c91866654dd8f8.png

查看重要变量

m$variable.importance

cd1495df93b56c27532013d6bd60447a.png

预测缺失值

predict(m, data[notna

b9740e45b40c1f308d60698ca30c4400.png

朴素贝叶斯

朴素贝叶斯是一种基于贝叶斯定理的分类算法。它假设所有特征之间相互独立,即朴素贝叶斯算法中的“朴素”指的是这种独立性假设。该算法通过计算每个类别的先验概率和每个特征在每个类别中的条件概率来预测新数据的分类。朴素贝叶斯算法在文本分类、垃圾邮件过滤、情感分析等领域得到了广泛应用。

mod1<-naiveBayes ( class~  ARR_DELAY_GROUP+DEP_DELAY_NEW+DEP_DELAY_GROU

混淆矩阵

混淆矩阵是用于评估分类模型性能的一种方法。它是一个二维矩阵,其中行表示真实类别,列表示预测类别。矩阵中的每个元素表示属于真实类别的样本被预测为属于预测类别的数量。混淆矩阵可以用于计算准确率、召回率、F1分数等指标,以评估分类模型的性能。

table(data2[1:50000,"class"], fit)

5dc531538c430cf99fbc0536fb95625a.png

plot( performance( prediction(as.numeric(fit), as.numeric(data2[1:50000,

f523e499830d8d02ba5a6d206d4e2d98.png

s"] )), "auc" )@y.values[[1]]

92e428e622a6cf5b3937491fbe2b4762.png

测试数据

  1. fit <-predict(mod1,datates )
  2. plot( performance( prediction(as.numeric(fit), as.numeric(datatest[1:90,

7c1fa0587357a86b2d24936986f47e20.png

k折交叉验证

k折交叉验证是一种常用的模型评估方法。它将数据集分成k个等份,然后每次将其中一个子集作为验证集,剩下的k-1个子集作为训练集,进行k次模型训练和验证。最终将k次验证的结果取平均值作为模型的性能指标。这种方法可以有效地利用数据集,减小因为数据集不同而导致的模型性能差异,并且可以避免过拟合。

  1. performance( prediction(as.numeric(fit), as.numeric(datatest[1:90,"clas
  2. k=10
  3. for(kk in 1:k){
  4.   index=sample(1:dim(data2)[1],floor(dim(data2)[1]*(1/k)),replace=F)#se

fcce08a714c0dd4469e897c1684e90b0.png

QDA

QDA是一种分类算法,全称为Quadratic Discriminant Analysis,即二次判别分析。它是一种基于贝叶斯定理的分类方法,适用于分类问题中的多个类别和多个特征。QDA假设每个类别的特征分布都是高斯分布,并且每个类别的协方差矩阵不同,因此可以通过计算每个类别的概率来进行分类。与线性判别分析(LDA)相比,QDA可以更好地处理非线性的分类问题,但是由于需要估计每个类别的协方差矩阵,当特征维度很高时,计算复杂度会很高。

z <- qda(data2[,c(selection2

b9f34f9d639a16e1954e13ba5d588175.png

  1. ##ROC
  2. plot( performance( prediction(as.numeric(fit), as.n

87c801020436d2b0cd8173eb13bd25de.png

performance( prediction(as.numeric(fit),  as.numeric(data2[ ,"class"]

c93ae6062e93eb140b524afa65faf4ef.png

k折交叉验证

  1. ## 1  th accuracy of qda is  0.8807619
  2. ## 2  th accuracy of qda is  0.8872381
  3. ## 3  th accuracy of qda is  0.8798095
  4. ## 4  th accuracy of qda is  0.8899048
  5. ## 5  th accuracy of qda is  0.888
  6. ## 6  th accuracy of qda is  0.8822857
  7. ## 7  th accuracy of qda is  0.8746667
  8. ## 8  th accuracy of qda is  0.8912381
  9. ## 9  th accuracy of qda is  0.8857143
  10. ## 10  th accuracy of qda is  0.8965714
  11. precisek/k#caculate precision
  12. ## [1] 0.885619

LDA分类线性判别分析

线性判别分析是一种很重要的分类算法,同时也是一种降维方法。和PCA一样,LDA也是通过投影的方式达到去除数据之间冗余的一种算法。

z <- lda(class ~ ., data2

1930d7412b924a0b324c4d936ab84579.png

ROC

ROC代表接收者操作特征曲线(Receiver Operating Characteristic Curve),是一种用于评估分类模型性能的方法。ROC曲线是一条以假阳性率(False Positive Rate)为横坐标,真阳性率(True Positive Rate)为纵坐标的曲线。ROC曲线越靠近左上角,说明模型的性能越好。ROC曲线下方的面积被称为AUC(Area Under the Curve),AUC越大,模型的性能越好。

a5c442db9dfbe9a7de7b99dd76cb9c89.png

performance( prediction(as.numeric(fit), as.numeric(data2[ ,"class"])),

5d5336a60b1e7af47ef667173aa4c165.png

k折交叉验证

  1. ## 1  th accuracy of lda is  0.831619
  2. ## 2  th accuracy of lda is  0.8251429
  3. ## 3  th accuracy of lda is  0.8213333
  4. ## 4  th accuracy of lda is  0.8219048
  5. ## 5  th accuracy of lda is  0.8209524
  6. ## 6  th accuracy of lda is  0.8184762
  7. ## 7  th accuracy of lda is  0.8226667
  8. ## 8  th accuracy of lda is  0.8171429
  9. ## 9  th accuracy of lda is  0.816381
  10. ## 10  th accuracy of lda is  0.8251429
  11. precisek/k#caculate precision
  12. ## [1] 0.8220762

决策树

决策树是一种基于树形结构的分类和回归算法,它通过对数据集进行分割,逐步生成一棵决策树,每个节点代表一个决策,每个分支代表一个可能的结果,最终叶子节点代表分类或回归的结果。在分类问题中,决策树可以通过一系列的条件判断对数据进行分类;在回归问题中,决策树可以通过对数据进行分割并对每个分割区域内的数据进行平均或加权平均来预测数值型的结果。决策树具有易于理解、易于实现、可解释性强等优点,但也容易出现过拟合等问题。

z <- rpart(class ~ ., data2[,c(selection2,"class")]  )

90235272467e370d59645ab1337c61c9.png

plot( performance( prediction(as.num

7d1eceb7c8bc42e5ad0e7b0ea8c4aa96.png

  1. ## 1  th accuracy of lda is  1
  2. ## 2  th accuracy of lda is  1
  3. ## 3  th accuracy of lda is  1
  4. ## 4  th accuracy of lda is  1
  5. ## 5  th accuracy of lda is  1
  6. ## 6  th accuracy of lda is  1
  7. ## 7  th accuracy of lda is  1
  8. ## 8  th accuracy of lda is  1
  9. ## 9  th accuracy of lda is  1
  10. ## 10  th accuracy of lda is  1
  11. precisek/k#caculate precision
  12. ## [1] 1

5449417eb91e8fdd66ae806705ca1651.jpeg

本文中分析的数据分享到会员群,扫描下面二维码即可加群!

482554b9c3ee066b89b8ff40643f5239.png

406cedd0c1cd15723feeef959d6f5174.png

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《R语言航班延误影响预测分析:lasso、决策树、朴素贝叶斯、QDA、LDA、缺失值处理、k折交叉验证》。

点击标题查阅往期内容

Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

R使用LASSO回归预测股票收益

广义线性模型glm泊松回归的lasso、弹性网络分类预测学生考试成绩数据和交叉验证

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现

R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据(含练习题)

Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例

R语言Bootstrap的岭回归和自适应LASSO回归可视化

R语言Lasso回归模型变量选择和糖尿病发展预测模型

R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

基于R语言实现LASSO回归分析

R语言用LASSO,adaptive LASSO预测通货膨胀时间序列

R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

Python中的Lasso回归之最小角算法LARS

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现

r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

R语言实现LASSO回归——自己编写LASSO回归算法

R使用LASSO回归预测股票收益

python使用LASSO回归预测股票收益

Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例

R语言Bootstrap的岭回归和自适应LASSO回归可视化

R语言Lasso回归模型变量选择和糖尿病发展预测模型

R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

基于R语言实现LASSO回归分析

R语言用LASSO,adaptive LASSO预测通货膨胀时间序列

R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

Python中的Lasso回归之最小角算法LARS

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现

r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

R语言实现LASSO回归——自己编写LASSO回归算法

R使用LASSO回归预测股票收益

python使用LASSO回归预测股票收益

82da077180390f57b2474a9843bdf11b.png

54537e98e5aeef8c9cbb4f87ffd02961.jpeg

17f258e97f7071ae736c53d1db03b2c8.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/156145
推荐阅读
相关标签
  

闽ICP备14008679号