R语言关于心脏病相关问题的预测和分析

这篇具有很好参考价值的文章主要介绍了R语言关于心脏病相关问题的预测和分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

背景

心脏病由心脏结构受损或功能异常引起包括先天性心脏病和后天性心脏病,不同类型的心脏病表现不同,轻重不一。

本报告是基于R语言对心脏研究的机器学习/数据科学调查分析。更具体地说,我们的目标是在心脏研究的数据集上建立一些预测模型,建立探索性和建模方法,并对其进行预测。这是心脏发生病变的疾病总称

因此通过实验总结为本次报告将有利于医疗工作者利用计算机科学进行相应的预测以及及时应对潜在的突发情况,一方面有利于减少医生的工作强调,为医生诊断工作进行辅助,另一方面更有利于患者的生命安全,以防止误诊的发生。

相关的文献回顾

阅读关于FHS的资料:心脏研究是对社区自由生活的人群中心血管疾病病因的长期前瞻性研究。心脏研究是流行病学的一个里程碑式的研究,因为它是第一个关于心血管疾病的前瞻性研究,并确定了风险因素的概念。

病因:心脏病往往受多种因素共同作用引起,包括先天因素和后天因素。先天因素包括家族遗传或自身先天缺陷、基因突变等;后天因素包括高血压、高血脂、糖尿病、慢性阻塞性肺气肿(COPD)、年龄增大、吸烟、不良生活习惯、感染史等。

预防:先天性心脏病的预防孕妇在怀孕期避免接触有毒物质、放射线,可以减少先天性心脏病的发生率;对于遗传导致的先天性心脏病,只能通过产前检查来预测。后天性获得性心脏病的预防可以通过改善日常生活方式(戒烟限酒、避免熬夜、劳累、调整情绪)预防心脏病的发生;如果患者存在慢性病,如糖尿病、高血压、高血脂,应通过药物、改善饮食和适当运动来控制这些慢性病对血管和心脏的损伤。

数据简介

Heart数据集,Age: 年龄,Sex: 性别,取值 1代表男性,0 代表女性,Pain: 胸痛的类型,取值 1、2、3、4代表 4 种不同类型,Bpress: 入院时的静息血压(单位:毫米汞柱),Chol: 血清胆固醇(单位:毫克/分升),Bsugar: 空腹血糖是否大于 120 毫克/分升,1代表是,0代表否,Ekg: 静息心电图结果,取值 0、1、2 代表 了种不同结果,Thalach: 达到的最大心率,Exang: 是否有运动性心绞痛,1代表是,0代表否,Oldpeak: 运动引起的 S工 段压低,Slope: 锻炼高峰期ST 段的斜率,取值.1 代表上斜,2 代表平坦,3 代表下斜,Ca: 荧光染色的大血管数目,取值为 0、1、2、3,Thal: 取值 3 代表正常,取值 6代表固定缺陷,取值 7代表可逆缺陷,Target1: 因变量,直径减少 50% 以上的大血管数目,取值为 0、1、2、3、4 ,Target2: 因变量,取值 1表示 target 大于0,取值0表示 target 等于0

数据

数据理解

通过对数据的可视化让我们初步了解数据情况

hist(train$age,xlab = "年龄",ylab = "人数",col = "yellow",main = '心脏病患者年龄分布',border = "blue",xlim = c(0,100))

R语言关于心脏病相关问题的预测和分析

通过上述心脏病患者的年龄分布让我们知道了主要集中在中老年人群。

hist(train$pain,xlab = "胸痛的类型",ylab = "人数",col = "yellow",main = '心脏病患者胸痛程度',border = "blue",xlim = c(0,5))

R语言关于心脏病相关问题的预测和分析

通过上述的心脏病患者胸痛程度表可以得知,往往心脏病发病的同时会伴随强烈的疼痛。

barplot(train$sex,main="男女患病对比",ylim = c(0,1),col = "blue")

R语言关于心脏病相关问题的预测和分析

通过分析上述男女患病面积对比图,可以轻松得知男性的患病率远远的大于女性,这可能是因为男性的日常不好的生活习惯和较重的生活压力所导致。

hist(train$bpress,xlab = "毫米汞柱",ylab = "人数",col = "yellow",main = '心脏病患者入院时的静息血压',border = "blue",xlim = c(80,180))

R语言关于心脏病相关问题的预测和分析

静息心率指在清醒、不活动的安静状态下,每分钟心跳的次数。

静息血压就是在此状态下的测量血压,大多数的心脏病患者都是集中在中高压这个范围,所以心脏病和高血压往往有着密不可分的关系。

hist(train$chol,xlab = "毫克/分升",ylab = "人数",col = "yellow",main = '心脏病患者入院时的血清胆固醇含量',border = "blue",xlim = c(0,500))

R语言关于心脏病相关问题的预测和分析

由此可见大多数心脏病患者刚入院时候的血清胆固醇含量很高,由此可见因身体发胖体重超标,出现血脂增高,而血脂增高是导致动脉硬化和心脑血管疾病的元凶。

barplot(train$bsugar,main="空腹血糖是否大于 120 毫克/分升对比",ylim = c(0,1),col = "blue")

R语言关于心脏病相关问题的预测和分析

通过上图的空腹血糖是否大于 120 毫克/分升对比分析得出,空腹血糖高的人数相对较少也就是说,心脏病的成因与胰岛素分泌所导致的血糖含量并无至关重要的关系。

hist(train$ekg,ylab = "人数",col = "yellow",main = '心脏病患者静息心电图结果',border = "blue",xlim = c(-1,3))

R语言关于心脏病相关问题的预测和分析

通过分析心脏病患者静息心电图结果分析来看,心脏病患者的静息心电图结果以0号和2号结果为主,1号结果几乎没有,所以由此可以推断,假如心电图结果为0号或者2号结果,那大概率上是属于心脏病患者。

hist(train$thalach,xlab = "年龄",ylab = "人数",col = "yellow",main = '心脏病患者达到的最大心率',border = "blue",xlim = c(0,250))

R语言关于心脏病相关问题的预测和分析

通过分析心脏病患者到达的最大心率进行分析,由此可见心脏病回应影响正常人的心率,而且会激增心率,这是很危险的事情,反之倘若有一个人的心率严重超过平均水平,我们由此可以推断其患有心脏病。

barplot(train$exang,main="是否有运动性心绞痛对比",ylim = c(0,1),col = "blue")

R语言关于心脏病相关问题的预测和分析

通过分析上图的是否有运动性心绞痛的对比图,让我们可以得出,是与否(0/1)的面积基本上属于对半分配,所以不好说此类因素是否影响和决定了心脏病的产生与发作。

hist(train$oldpeak,ylab = "人数",col = "yellow",main = '运动引起的S工段压低',border = "blue",xlim = c(-2,8))

R语言关于心脏病相关问题的预测和分析

ST段压低”最常见的原因是冠心病,即供应心脏血液的冠状动脉出现不同程度的堵塞,临床可表现为心绞痛,疼痛多于劳累后发生,为位于心前区的闷痛,持续几分钟至十几分钟,休息后可缓解。因此,首先要知晓“ST段压低”是哪种原因引起的,结合具体情况分析判断。先分析有无冠心病的危险因素,包括老年、吸烟、高血压、高血脂、糖尿病以及直系亲属有无冠心病史,然后在劳累(跑步、上楼、骑车等)或激动后有无上述的心绞痛症状。如果存在多个危险因素或有心绞痛症状,应该到医院进一步检查。明确有冠心病的患者,日常生活中除了坚持服药,控制冠心病危险因素也是十分重要的,包括戒烟,控制血压、血糖,低脂饮食。可以参加适量的运动,但以不引起胸闷、胸痛为限。如果不存在危险因素,也没有典型的心绞痛症状,那么“ST段压低”并不代表就是冠心病,不需要特别的治疗。当然培养良好的饮食和生活习惯还是必要的。

hist(train$slope,xlab = "取值1 代表上斜,2 代表平坦,3 代表下斜",ylab = "人数",col = "yellow",main = '锻炼高峰期ST段的斜率',border = "blue",xlim = c(1,3))

R语言关于心脏病相关问题的预测和分析

心电学指标:①ST段下移最大值;②ST段偏移的方式(下斜型、上斜型、水平型);③ST段抬高最大值;④出现ST段改变的导联数;⑤ST段改变回复至运动前水平的时间;⑥ST/HR指数;⑦运动诱发的室性心律失常;⑧ST段出现异常改变的起始时间。临床研究显示,在接近最大心率或靶心率条件下,冠心病者ECG ST段压低与心率变化通常呈线性相关,所有记录导联均应进行测算,ST/HR斜率≥2.4μV/bpm为阳性,被认为敏感性和特异性均高于单纯ST,特别是对于只能耐受低运动量水平者的冠心病诊断。不受药物、性别影响,尤其适宜于上斜型ST段下移和低水平负荷者,缺点在于计算繁琐,心肌梗死早期易致假阴性,而心肌病及主动脉瓣病变可出现假阳性。

hist(train$ca,xlab = "取值为 0、1、2、3",ylab = "人数",col = "yellow",main = '荧光染色的大血管数目',border = "blue",xlim = c(-1,4))

R语言关于心脏病相关问题的预测和分析

萤光显色的主要血管数目(0-3)彩色血管意味着医生可以看到血液通过血液运动越多越好(无凝块)由此可见患有心脏病的患者血液运动的相对较慢。

hist(train$thal,xlab = "取值 3 代表正常,取值 6代表固定缺陷,取值 7代表可逆缺陷",ylab = "人数",col = "yellow",main = '缺陷情况',border = "blue",xlim = c(2,8))

R语言关于心脏病相关问题的预测和分析

修复缺陷:曾经是缺陷,但是现在可以了,可逆缺陷:锻炼时没有适当的血液运动

数据准备

因为数据都是num类型的所以我们要把他转换成factor因子类型

train$sex<-as.factor(train$sex)

train$pain<-as.factor(train$pain)

train$bsugar<-as.factor(train$bsugar)

train$ekg<-as.factor(train$ekg)

train$target<-as.factor(train$target)

train$exang<-as.factor(train$exang)

train$slope<-as.factor(train$slope)

train$ca<-as.factor(train$ca)

train$thal<-as.factor(train$thal)

train$target2<-as.factor(train$target2)

test<- read.csv(file="E:\\R\\TEST\\heart_test.csv",header=T,fileEncoding = "utf-8")

test$sex<-as.factor(test$sex)

test$pain<-as.factor(test$pain)

test$bsugar<-as.factor(test$bsugar)

test$ekg<-as.factor(test$ekg)

test$target<-as.factor(test$target)

test$exang<-as.factor(test$exang)

test$slope<-as.factor(test$slope)

test$ca<-as.factor(test$ca)

test$thal<-as.factor(test$thal)

test$target2<-as.factor(test$target2)

R语言关于心脏病相关问题的预测和分析

由此可见我们的数据以及处理完毕了,接下来就开始数据建模

分析

建模过程(逻辑回归模型)

由于target不为二元分类所以无法使用逻辑回归,所以我们使用逻辑回归解决target2这个因变量的预测问题

首先先建模

result<-glm(target2~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,data = train,family="binomial")

模型反映的结果(逻辑回归模型)

summary(result)

R语言关于心脏病相关问题的预测和分析

模型的预测(逻辑回归模型)

predResult<-round(predict(result,test,type="response"))

yuces= data.frame(test$target2,predResult)

R语言关于心脏病相关问题的预测和分析 R语言关于心脏病相关问题的预测和分析

数据分析及结果(逻辑回归模型)

由此可见预测的结果还是和真实值相比是十分准确的。

建模过程(决策树模型)

model<- rpart(target~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,train)



model<- rpart(target2~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,train)

模型反映的结果(决策树模型)

summary(model)

R语言关于心脏病相关问题的预测和分析

根据交叉验证结果,找出估计误差最小时的cp值,并重新建立模型。

xerr <-model$cptable[,"xerror"]

minxerr <- which.min(xerr)

选择交叉验证的估计误差最小时对应的cp

mincp <-model$cptable[minxerr, "CP"]

model.prune <- prune(model,cp=mincp)

新模型

fancyRpartPlot(model.prune)

R语言关于心脏病相关问题的预测和分析

summary(model)

R语言关于心脏病相关问题的预测和分析

根据交叉验证结果,找出估计误差最小时的cp值,并重新建立模型。

xerr <-model$cptable[,"xerror"]

minxerr <- which.min(xerr)

选择交叉验证的估计误差最小时对应的cp

mincp <-model$cptable[minxerr, "CP"]

model.prune <- prune(model,cp=mincp)

新模型

fancyRpartPlot(model.prune)

R语言关于心脏病相关问题的预测和分析

模型的预测(决策树模型)

pred<-predict(model,test,type="class")

存为数据框

yucess= data.frame(test$target,pred)

R语言关于心脏病相关问题的预测和分析 R语言关于心脏病相关问题的预测和分析

数据分析及结果(决策树模型)

列出对应规则

rpart.plot(model)

asRules(model)

R语言关于心脏病相关问题的预测和分析

R语言关于心脏病相关问题的预测和分析

fancyRpartPlot(model)    #更美观

R语言关于心脏病相关问题的预测和分析

model$cptable    #查看交叉验证结果

R语言关于心脏病相关问题的预测和分析

plotcp(model)    #查看交叉验证结果图

R语言关于心脏病相关问题的预测和分析

rpart.plot(model)

asRules(model) #列出对应规则

R语言关于心脏病相关问题的预测和分析

R语言关于心脏病相关问题的预测和分析

fancyRpartPlot(model)    #更美观

R语言关于心脏病相关问题的预测和分析

model$cptable    #查看交叉验证结果

plotcp(model)    #查看交叉验证结果图

R语言关于心脏病相关问题的预测和分析

建模过程(随机森林模型)

pred <- data.frame()  #存储预测结果



library(plyr)

library(randomForest)

m <- seq(50,1000,by = 10) #如果数据量大尽量间隔大点,间隔过小没有实际意义

for(j in m){  #j指的是随机森林的数量

  progress.bar <- create_progress_bar("text") #plyr包中的create_progress_bar函数创建一个进度条,

  progress.bar$init(10)  #设置上面的任务数,几折就是几个任务

  for (i in 1:10){

   

    model <-randomForest(target~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,data = train,ntree = j)  #建模,ntree=j 指的树数

    prediction <- predict(model,subset(test,select = -target))  #预测

    randomtree <- rep(j,length(prediction))  #随机森林树的数量

    kcross <- rep(i,length(prediction))  #i是第几次循环交叉,共K次

    temp <- data.frame(cbind(subset(test,select =target),prediction,randomtree,kcross))#真实值、预测值、随机森林树数、预测组编号捆绑在一起组成新的数据框tenp

    pred <- rbind(pred,temp)  #temp按行和pred合并

    print(paste("进行到:",j)) #循环至树数j的随机森林模型

    progress.bar$step() #输出进度条。告知完成了这个任务的百分之几

  }

}



Temp

R语言关于心脏病相关问题的预测和分析

pred <- data.frame()  #存储预测结果



library(plyr)

library(randomForest)

m <- seq(50,1000,by = 10) #如果数据量大尽量间隔大点,间隔过小没有实际意义

for(j in m){  #j指的是随机森林的数量

  progress.bar <- create_progress_bar("text") #plyr包中的create_progress_bar函数创建一个进度条,

  progress.bar$init(10)  #设置上面的任务数,几折就是几个任务

  for (i in 1:10){

   

    model <-randomForest(target2~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,data = train,ntree = j)  #建模,ntree=j 指的树数

    prediction <- predict(model,subset(test,select = -target2))  #预测

    randomtree <- rep(j,length(prediction))  #随机森林树的数量

    kcross <- rep(i,length(prediction))  #i是第几次循环交叉,共K次

    temp <- data.frame(cbind(subset(test,select =target2),prediction,randomtree,kcross))#真实值、预测值、随机森林树数、预测组编号捆绑在一起组成新的数据框tenp

    pred <- rbind(pred,temp)  #temp按行和pred合并

    print(paste("进行到:",j)) #循环至树数j的随机森林模型

    progress.bar$step() #输出进度条。告知完成了这个任务的百分之几

  }

}



Temp

R语言关于心脏病相关问题的预测和分析

模型的预测(随机森林模型)

pred <- data.frame()  #存储预测结果

temp <- data.frame(cbind(subset(test,select =target),prediction,randomtree,kcross))#真实值、预测值、随机森林树数、预测组编号捆绑在一起组成新的数据框tenp

pred <- rbind(pred,temp)  #temp按行和pred合并

R语言关于心脏病相关问题的预测和分析 R语言关于心脏病相关问题的预测和分析

pred <- data.frame()  #存储预测结果

temp <- data.frame(cbind(subset(test,select =target2),prediction,randomtree,kcross))#真实值、预测值、随机森林树数、预测组编号捆绑在一起组成新的数据框tenp

    pred <- rbind(pred,temp)  #temp按行和pred合并

R语言关于心脏病相关问题的预测和分析 R语言关于心脏病相关问题的预测和分析

附录(核心代码)文章来源地址https://www.toymoban.com/news/detail-492000.html



train<- read.csv(file="E:\\R\\TEST\\heart_learning.csv",header=T,fileEncoding = "utf-8")

hist(train$age,xlab = "年龄",ylab = "人数",col = "yellow",main = '心脏病患者年龄分布',border = "blue",xlim = c(0,100))
Shist(train$pain,xlab = "胸痛的类型",ylab = "人数",col = "yellow",main = '心脏病患者胸痛程度',border = "blue",xlim = c(0,5))
barplot(train$sex,main="男女患病对比",ylim = c(0,1),col = "blue")
hist(train$bpress,xlab = "毫米汞柱",ylab = "人数",col = "yellow",main = '心脏病患者入院时的静息血压',border = "blue",xlim = c(80,180))
hist(train$chol,xlab = "毫克/分升",ylab = "人数",col = "yellow",main = '心脏病患者入院时的血清胆固醇含量',border = "blue",xlim = c(0,500))
barplot(train$bsugar,main="空腹血糖是否大于 120 毫克/分升对比",ylim = c(0,1),col = "blue")
hist(train$ekg,ylab = "人数",col = "yellow",main = '心脏病患者静息心电图结果',border = "blue",xlim = c(-1,3))
hist(train$thalach,xlab = "心率",ylab = "人数",col = "yellow",main = '心脏病患者达到的最大心率',border = "blue",xlim = c(0,250))
barplot(train$exang,main="是否有运动性心绞痛对比",ylim = c(0,1),col = "blue")
hist(train$oldpeak,ylab = "人数",col = "yellow",main = '运动引起的S工段压低',border = "blue",xlim = c(-2,8))
hist(train$slope,xlab = "取值1 代表上斜,2 代表平坦,3 代表下斜",ylab = "人数",col = "yellow",main = '锻炼高峰期ST段的斜率',border = "blue",xlim = c(1,3))
hist(train$ca,xlab = "取值为 0、1、2、3",ylab = "人数",col = "yellow",main = '荧光染色的大血管数目',border = "blue",xlim = c(-1,4))
hist(train$thal,xlab = "取值 3 代表正常,取值 6代表固定缺陷,取值 7代表可逆缺陷",ylab = "人数",col = "yellow",main = '缺陷情况',border = "blue",xlim = c(2,8))

train$sex<-as.factor(train$sex)
train$pain<-as.factor(train$pain)
train$bsugar<-as.factor(train$bsugar)
train$ekg<-as.factor(train$ekg)
train$target<-as.factor(train$target)
train$exang<-as.factor(train$exang)
train$slope<-as.factor(train$slope)
train$ca<-as.factor(train$ca)
train$thal<-as.factor(train$thal)
train$target2<-as.factor(train$target2)

test<- read.csv(file="E:\\R\\TEST\\heart_test.csv",header=T,fileEncoding = "utf-8")
test$sex<-as.factor(test$sex)
test$pain<-as.factor(test$pain)
test$bsugar<-as.factor(test$bsugar)
test$ekg<-as.factor(test$ekg)
test$target<-as.factor(test$target)
test$exang<-as.factor(test$exang)
test$slope<-as.factor(test$slope)
test$ca<-as.factor(test$ca)
test$thal<-as.factor(test$thal)
test$target2<-as.factor(test$target2)

str(train)
str(test)


#------------------------------------------------------------------------------------------------------------------------------
#逻辑回归
result<-glm(target2~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,data = train,family="binomial")
summary(result)
predResult<-round(predict(result,test,type="response"))

yuces= data.frame(test$target2,predResult)
#------------------------------------------------------------------------------------------------------------------------------
#决策树

model<- rpart(target~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,train)
#查看模型结果
summary(model)
rpart.plot(model)
asRules(model) #列出对应规则


fancyRpartPlot(model)    #更美观

model$cptable    #查看交叉验证结果
plotcp(model)    #查看交叉验证结果图


#根据交叉验证结果,找出估计误差最小时的cp值,并重新建立模型。
xerr <-model$cptable[,"xerror"]
minxerr <- which.min(xerr)
#选择交叉验证的估计误差最小时对应的cp
mincp <-model$cptable[minxerr, "CP"]

model.prune <- prune(model,cp=mincp) 

#新模型
fancyRpartPlot(model.prune)
#进行预测
pred<-predict(model,test,type="class")

#存为数据框
yucess= data.frame(test$target,pred)


model<- rpart(target2~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,train)
#查看模型结果
summary(model)
rpart.plot(model)
asRules(model) #列出对应规则


fancyRpartPlot(model)    #更美观

model$cptable    #查看交叉验证结果
plotcp(model)    #查看交叉验证结果图


#根据交叉验证结果,找出估计误差最小时的cp值,并重新建立模型。
xerr <-model$cptable[,"xerror"]
minxerr <- which.min(xerr)
#选择交叉验证的估计误差最小时对应的cp
mincp <-model$cptable[minxerr, "CP"]

model.prune <- prune(model,cp=mincp) 

#新模型
fancyRpartPlot(model.prune)
#进行预测
pred<-predict(model,test,type="class")

#存为数据框
yucess= data.frame(test$target2,pred)
#------------------------------------------------------------------------------------------------------------------------------
#随机森林
pred <- data.frame()  #存储预测结果

library(plyr)
library(randomForest)
m <- seq(50,1000,by = 10) #如果数据量大尽量间隔大点,间隔过小没有实际意义
for(j in m){  #j指的是随机森林的数量
  progress.bar <- create_progress_bar("text") #plyr包中的create_progress_bar函数创建一个进度条,
  progress.bar$init(10)  #设置上面的任务数,几折就是几个任务
  for (i in 1:10){
    
    model <-randomForest(target~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,data = train,ntree = j)  #建模,ntree=j 指的树数
    prediction <- predict(model,subset(test,select = -target))  #预测
    randomtree <- rep(j,length(prediction))  #随机森林树的数量
    kcross <- rep(i,length(prediction))  #i是第几次循环交叉,共K次
    temp <- data.frame(cbind(subset(test,select =target),prediction,randomtree,kcross))#真实值、预测值、随机森林树数、预测组编号捆绑在一起组成新的数据框tenp
    pred <- rbind(pred,temp)  #temp按行和pred合并
    print(paste("进行到:",j)) #循环至树数j的随机森林模型
    progress.bar$step() #输出进度条。告知完成了这个任务的百分之几
  }
}

temp


pred <- data.frame()  #存储预测结果

library(plyr)
library(randomForest)
m <- seq(50,1000,by = 10) #如果数据量大尽量间隔大点,间隔过小没有实际意义
for(j in m){  #j指的是随机森林的数量
  progress.bar <- create_progress_bar("text") #plyr包中的create_progress_bar函数创建一个进度条,
  progress.bar$init(10)  #设置上面的任务数,几折就是几个任务
  for (i in 1:10){
    
    model <-randomForest(target2~age+sex+pain+bsugar+ekg+exang+slope+ca+thal+oldpeak+thalach+chol+bpress,data = train,ntree = j)  #建模,ntree=j 指的树数
    prediction <- predict(model,subset(test,select = -target2))  #预测
    randomtree <- rep(j,length(prediction))  #随机森林树的数量
    kcross <- rep(i,length(prediction))  #i是第几次循环交叉,共K次
    temp <- data.frame(cbind(subset(test,select =target2),prediction,randomtree,kcross))#真实值、预测值、随机森林树数、预测组编号捆绑在一起组成新的数据框tenp
    pred <- rbind(pred,temp)  #temp按行和pred合并
    print(paste("进行到:",j)) #循环至树数j的随机森林模型
    progress.bar$step() #输出进度条。告知完成了这个任务的百分之几
  }
}

temp

到了这里,关于R语言关于心脏病相关问题的预测和分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 心脏病可视化和分类预测

    背景:心脏病是人类健康的头号杀手,全世界1/3的人口死亡是心脏病引起的。而我国,每年有几十万人死于心脏病。如果可以通过提取人体相关的体测指标,通过数据挖掘方式来分析不同特征对于心脏病的影响,将对预防心脏病起到至关重要的作用。 意义:此数据集可以用于

    2024年02月06日
    浏览(41)
  • 基于数据挖掘机器学习的心脏病患者分类建模与分析

    首先,读取数据集,该数据集是UCI上的心脏病患者数据集,其中包含了 303 条患者信息,每一名患者有 13 个字段记录其基本信息(年龄、性别等)和身体健康信息(心率、血糖等),此外有一个类变量记录其是否患有心脏病。详细的字段信息可见 此处。 类别字段 target 有两

    2024年01月19日
    浏览(56)
  • Python数据分析—基于机器学习的UCI心脏病数据分析(源码+数据+分析设计)

    下载链接:https://pan.baidu.com/s/1ys2F6ZH4EgnFdVP2mkTcsA?pwd=LCFZ 提取码:LCFZ 心脏病是一类比较常见的循环系统疾病。循环系统由心脏、血管和调节血液循环的神经体液组织构成,循环系统疾病也称为心血管病,包括上述所有组织器官的疾病,在内科疾病中属于常见病,其中以心脏病

    2024年02月07日
    浏览(56)
  • 【统计模型】心脏病患病影响因素探究

    目录 心脏病患病影响因素探究 一、研究目的 二、数据来源和相关说明 三、描述性统计分析 四、数据建模 4.1 全模型 (1)模型构建 (2)模型预测 4.2 基于AIC准则的选模型A 4.3 基于BIC准则的选模型B 4.4 模型评估 五、结论及建议 5.1 结论 5.2 建议 六、代码         内容提要

    2024年02月03日
    浏览(120)
  • 基于python的心脏病个人指数数据集数据处理——结课论文

    前言: 此论文是小赵的python数据分析与应用的结课作业 , 未上传论文涉及的所有数据集,本论文所涉及的数据预处理,数据分析和可视化仅以这些数据集为准,所有处理方法,结果以及结论仅个人观点。 心脏病个人指数数据集数据处理 摘要:     本论文包含了对心脏病个

    2024年02月04日
    浏览(44)
  • R语言-数据分析及建模(第1节)分类与预测问题简介

    小伙伴们,今天我们学习R语言-数据分析及建模(第1节)分类与预测问题简介 01-分类与预测问题简介 ◆ 分类和预测 是预测问题的两种主要类型,分类主要是预测分类标号(离散属性) ,而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值。 ◆ 分类 是构

    2024年02月16日
    浏览(42)
  • 实操-rapidminer进行关联分析、分类预测(使用相关算子,全流程讲解)

    目录 一、关联分析 1.构建过程 1.1导入数据 1.2检查缺失值,异常值 1.3 约减数据集中属性 2.对结果的评述 2.1 FP-Growth的支持度(Support)参数为0.95情况 2.2 不同min support对关联规则结果的影响 2.3 不同min confidence对结果的影响 3.促销政策 二、分类预测 1.对Titannic Unlabeld进行预测

    2024年02月05日
    浏览(51)
  • 关于TLS相关安全配置问题

    近期被信安部门反馈了TLS几个安全漏洞。 SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】 SSL/TLS  受诫礼 (BAR-MITZVAH) 攻击漏洞 (CVE-2015-2808) 【原理扫描】 SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱【原理扫描】 SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)【原理扫描】 其实是使用了移

    2024年02月03日
    浏览(30)
  • 关于hive启动的相关问题记录

    问题:初始化hive元数据报错 首先想到的是删除hive在MySQL中创建的元数据库Metastore 和HDFS中创建的目录 结果还是报错 仔细一看是hive.metastore连接问题 查看MySQL中的用户权限 参考:https://blog.csdn.net/peterchan88/article/details/78341852 使用初始化命令还是报错,继续往下查 检查 MySQL 服务

    2024年04月10日
    浏览(41)
  • 数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源)

           选取2000-2017年x省碳排放量为训练集,2018-2022x省碳排放量作为测试集,以此来预测2023-2026年x省碳排放量。设置训练次数为 1000次,学习速率为0.2;对该训练集BP神经网络模型拟合后模型的训练样本、验 证样本和测试样本的均方误差分别是0.000012、0.0023、0.0042,整体的误

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包