关于数据挖掘:R语言航班延误影响预测分析lasso决策树朴素贝叶斯QDALDA缺失值处理k折交叉验证

41次阅读

共计 4921 个字符,预计需要花费 13 分钟才能阅读完成。

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

原文出处:拓端数据部落公众号

航班延误是航空公司、旅客和机场治理方面都面临的一个重要问题。航班延误不仅会给旅客带来不便,还会对航空公司和机场的经营产生负面影响。因而,对航班延误的影响因素进行预测剖析,对于航空公司、旅客和机场治理方面都具备重要意义。

本文通过对航班数据进行剖析,帮忙客户应用 lasso 变量筛选、决策树、奢侈贝叶斯、QDA、LDA 等办法,对航班延误的影响因素进行预测剖析。同时,本文还对缺失值进行解决,并应用 k 折穿插验证对模型进行评估。

数据起源和预处理

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

data=read.table("12_months_dataFinal.csv")

head(data)

colnames(data)

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

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

2. 工夫:季度、月和日。

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

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

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

因变量为:ARR\_DELAY

别离采纳三种办法对空值进行解决

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

(1)删除法

data1=na.omit(data)

(2)平均值补缺

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

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

completedData <- complete(tempData,1)

办法

本文应用了如下办法对航班延误的影响因素进行预测剖析:

  • lasso 变量筛选
  • 决策树
  • 奢侈贝叶斯
  • QDA
  • LDA
  • k 折穿插验证

变量筛选

应用 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

coef(cv.lasso

依据 lasso 筛选出最优的变量

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

在 Lasso 中,通过调整正则化参数 λ 的大小,能够管制模型的复杂度和特征选择的水平。当 λ 越大时,模型的复杂度越小,特征选择的水平越高。因而,能够通过穿插验证等办法来抉择最优的 λ 值,进而筛选出最优的变量。

简而言之,通过 Lasso 办法筛选出最优的变量,就是在管制模型复杂度的前提下,选出对指标变量影响最大的特色,从而进步模型的预测能力。

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

筛选变量

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

应用决策树填充缺失值

应用决策树填充缺失值是指在数据集中存在缺失值的状况下,应用决策树模型来预测缺失值并进行填充。具体地,能够将数据集中的所有特色和标签都作为输出,将含有缺失值的样本作为测试数据,利用已有的数据来训练决策树模型,而后应用训练好的模型来预测缺失值并进行填充。这种办法能够利用数据集中已有的信息来预测缺失值,从而进步数据的完整性和可用性。

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

查看重要变量

m$variable.importance

预测缺失值

predict(m, data[notna

奢侈贝叶斯

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

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

混同矩阵

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

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

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

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

测试数据

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

k 折穿插验证

k 折穿插验证是一种罕用的模型评估办法。它将数据集分成 k 个等份,而后每次将其中一个子集作为验证集,剩下的 k - 1 个子集作为训练集,进行 k 次模型训练和验证。最终将 k 次验证的后果取平均值作为模型的性能指标。这种办法能够无效地利用数据集,减小因为数据集不同而导致的模型性能差别,并且能够防止过拟合。

performance(prediction(as.numeric(fit), as.numeric(datatest[1:90,"clas

k=10  
for(kk in 1:k){index=sample(1:dim(data2)[1],floor(dim(data2)[1]*(1/k)),replace=F)#se

QDA

QDA 是一种分类算法,全称为 Quadratic Discriminant Analysis,即二次判别分析。它是一种基于贝叶斯定理的分类办法,实用于分类问题中的多个类别和多个特色。QDA 假如每个类别的特色散布都是高斯分布,并且每个类别的协方差矩阵不同,因而能够通过计算每个类别的概率来进行分类。与线性判别分析(LDA)相比,QDA 能够更好地解决非线性的分类问题,然而因为须要预计每个类别的协方差矩阵,当特色维度很高时,计算复杂度会很高。

z <- qda(data2[,c(selection2

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

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

k 折穿插验证

## 1  th accuracy of qda is  0.8807619  
## 2  th accuracy of qda is  0.8872381  
## 3  th accuracy of qda is  0.8798095  
## 4  th accuracy of qda is  0.8899048  
## 5  th accuracy of qda is  0.888  
## 6  th accuracy of qda is  0.8822857  
## 7  th accuracy of qda is  0.8746667  
## 8  th accuracy of qda is  0.8912381  
## 9  th accuracy of qda is  0.8857143  
## 10  th accuracy of qda is  0.8965714

precisek/k#caculate precision

## [1] 0.885619

LDA 分类线性判别分析

线性判别分析是一种很重要的分类算法,同时也是一种降维办法(这个我还没想懂)。和 PCA 一样,LDA 也是通过投影的形式达到去除数据之间冗余的一种算法。

z <- lda(class ~ ., data2

ROC

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

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

k 折穿插验证

## 1  th accuracy of lda is  0.831619  
## 2  th accuracy of lda is  0.8251429  
## 3  th accuracy of lda is  0.8213333  
## 4  th accuracy of lda is  0.8219048  
## 5  th accuracy of lda is  0.8209524  
## 6  th accuracy of lda is  0.8184762  
## 7  th accuracy of lda is  0.8226667  
## 8  th accuracy of lda is  0.8171429  
## 9  th accuracy of lda is  0.816381  
## 10  th accuracy of lda is  0.8251429

precisek/k#caculate precision

## [1] 0.8220762

决策树

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

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

plot( performance( prediction(as.num

## 1  th accuracy of lda is  1  
## 2  th accuracy of lda is  1  
## 3  th accuracy of lda is  1  
## 4  th accuracy of lda is  1  
## 5  th accuracy of lda is  1  
## 6  th accuracy of lda is  1  
## 7  th accuracy of lda is  1  
## 8  th accuracy of lda is  1  
## 9  th accuracy of lda is  1  
## 10  th accuracy of lda is  1

precisek/k#caculate precision

## [1] 1

最受欢迎的见解

1.PYTHON 用户散失数据挖掘:建设逻辑回归、XGBOOST、随机森林、决策树、反对向量机、奢侈贝叶斯模型和 KMEANS 聚类用户画像

2. R 语言基于树的办法:决策树,随机森林

3.python 中应用 scikit-learn 和 pandas 决策树

4. 机器学习:在 SAS 中运行随机森林数据分析报告

5. R 语言用随机森林和文本开掘进步航空公司客户满意度

6. 机器学习助推快时尚精准销售工夫序列

7. 用机器学习辨认一直变动的股市情况——隐马尔可夫模型的利用

8.python 机器学习:举荐零碎实现(以矩阵合成来协同过滤)

9.python 中用 pytorch 机器学习分类预测银行客户散失

正文完
 0