利用R语言分析挖掘Titanic数据集(三)
基于决策树预测获救乘客1)构建一个数据划分函数split.data该函数有三个输入参数:data,p和s.其中data代表输入数据集,参数p从输入集中生成的子集比重,参数s为随机种子。 split.data = function(data,p = 0.7,s = 666){
set.seed(s)
index = sample(1:dim(data)[1])
train = data[index[1:floor(dim(data)[1] * p)],]
test = data[index[((ceiling(dim(data)[1] * p))+1):dim(data)[1]],]
return(list(train = train,test = test))
}
2)数据分类allset = split.data(train.data,p=0.7)
trainset = allset$train
testset = allset$test
3)加载决包树包library(grid) library(mvtnorm) library(modeltools) library(stats4) library(strucchange) library(zoo) library(sandwich) library(party)
4)进行决策树分析并做图train.ctree = ctree(Survived ~ Pclass + Sex + Age + SibSp + Fare + Parch + Embarked,data=trainset)
plot(train.ctree,main = "Conditional inference tree of Titanic Dataset")
分析介绍了如何使用条件推理树(决策树)ctree来预测乘客的逃生结果,尽管这不是解决分类的唯一办法,不过使用这个方法简单与易于理解。 除去ctree之后,我们还可以使用函数支持向量机svm(支持向量机)来构建预测模型,之后介绍。 基于混淆矩阵验证预测结果的准备性library("lattice")
library("ggplot2")
library("caret")
library("e1071")
ctree.predict = predict(train.ctree,testset)
confusionMatrix(ctree.predict,testset$Survived)
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 160 23
1 16 68
Accuracy : 0.8539
95% CI : (0.8058,0.894)
No Information Rate : 0.6592
P-Value [Acc > NIR] : 5.347e-13
Kappa : 0.6688
Mcnemar's Test P-Value : 0.3367 Sensitivity : 0.9091 Specificity : 0.7473 Pos Pred Value : 0.8743 Neg Pred Value : 0.8095 Prevalence : 0.6592 Detection Rate : 0.5993 Detection Prevalence : 0.6854 Balanced Accuracy : 0.8282 'Positive' Class : 0
分析评估模型预测性能是完成模型构建后的一个重要工作,可以使用测试数据集的预测结果与实际类标签匹配程序作为评估依据,并使用caret包提供的预测准确评价工具——混淆矩阵来完成评估工具。 使用ROC曲线评估性能#准备概率矩阵
train.ctree.pred = predict(train.ctree,testset)
train.ctree.prob = 1 - unlist(treeresponse(train.ctree,testset),use.names = F)[seq(1,nrow(testset)*2,2]
#导入ROCR包
library("gplots")
library("ROCR")
#根据概率生成ROCR预测对象
train.ctree.prob.rocr = prediction(train.ctree.prob,testset$Survived)
#准备好ROC曲线的ROCR的性能对象(tpr = true postive rate,fpr = false postive rate)
train.ctree.perf = performance(train.ctree.prob.rocr,"tpy","fpy")
train.ctree.auc.perf = performance(train.ctree.prob.rocr,measure = "auc",x.measure = "cutoff")
#绘制ROC曲线,colorize参数设置为TRUE,标出AUC值作为标题
plot(train.ctree.perf,col=2,colorize = T,main = paste("AUC:",train.ctree.auc.perf@y.values))
分析首先依据概率矩阵生成预测对象,然后准备ROC曲线所需的ROCR性能对象,(tpr = true postive rate,fpr = false postive rate) 以及AUC值,最后,使用绘图函数来画ROC曲线。 在ROC曲线中,曲线下的面积越大(AUC = 1 预测效果最优),模型的预测准确度越高。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |