首页 > 其他分享 >数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化|附代码数据

数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化|附代码数据

时间:2022-11-10 19:55:26浏览次数:75  
标签:用主 逻辑 语言 回归 可视化 PCA 数据 模型 决策树


 

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

在讨论分类时,我们经常分析二维数据(一个自变量,一个因变量) ( 点击文末“阅读原文”获取完整代码数据******** )。

但在实际生活中,有更多的观察值,更多的解释变量。随着两个以上的解释变量,它开始变得更加复杂的可视化。

数据

我们使用心脏病数据 ( 查看文末了解数据获取方式 ) ,预测急诊病人的心肌梗死,包含变量:

  1. 心脏指数
  2. 心搏量指数
  3. 舒张压
  4. 肺动脉压
  5. 心室压力
  6. 肺阻力
  7. 是否存活

图片

其中我们有急诊室的观察结果,对于心肌梗塞,我们想了解谁存活下来了,以得到一个预测模型。但是在运行一些分类器之前,我们先把我们的数据可视化。

主成分PCA

由于我们有7个解释变量和我们的因变量(生存或死亡),我们可以去做一个PCA。

acp=PCA(X)

图片

添加死亡生存变量,就把它当作数字0,1变量。


点击标题查阅往期内容

图片

数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

 是否存活= 是否存活=="存活")*1

图片

结果不错,我们看到因变量与部分自变量是同向的。也可以可视化样本和类别

plot(cp  )

图片

我们可以在这里推导出一个不错的分类器。至少,在前两个成分上投影时,我们可以看到我们的类别。
现在,我们不能在前两个主成分上得到一个分类器并将其可视化吗?   因为PCA是简单的基于正交投影的,所以我们可以(这里的数据是标准化的)。给定前两个分量平面上的两个坐标,给定我们的变换矩阵、归一化分量和一个分类器(这里是基于逻辑回归),我们可以回到原始空间,并对新数据进行分类。

PCA(X,ncp=ncol(X))
function(d1,d2,Mat,reg){
  z=Mat %*% c(d1,d2,rep(0,ncol(X)-2))
  newd=data.frame(t(z*s+m))
pred(reg, newd  }

 逻辑回归

现在考虑一个逻辑回归。只是为了简化(去掉非显著变量),我们使用一个逐步回归的程序来简化模型。

reg_tot=step(glm(是否存活~. ,
family=binomial))

图片

可视化等概率线(如个人有50%的生存机会)使用以下

xgrid=seq(-5,5,length=25 )
ygrid=seq(-5,5,length=25 )
zgrid=ter(xgrid,ygrid,p)

然后,我们在之前的图形上添加一条等高线

PCA(data,quali.sup=8 )

contour( zgrid )

图片

结果不差,但我们应该可以做得更好。如果我们把所有的变量都保留在这里(即使它们不重要),会怎么样呢?

 glm(是否存活~., 
            family=binomial)
 
contour(xgrid,ygrid,zgrid )

图片

在现实生活中,要想真正说出我们的分类器的一些相关信息,我们应该在观测值的一个子集上拟合我们的模型,然后在另一个子集上测试它。在这里,我们的目标更多的是在某个投影空间上得到一个函数来可视化我们的分类。

决策树

默认分类树

> plot( re,type=4,extra=6)

图片

我们可以在此更改选项,例如每个节点的最小观察数

rpart(factor(是否存活)~ ,
+       control=rpart.control(minsplit=10))

图片

或者

 rpart( 
+        control=rpart.control(minsplit=5))

图片

要将该分类可视化,获得前两个成分的投影

> p=function(d1,d2) pred2(d1,d2 )

> zgrid=Outer(xgrid,ygrid,p)
 PCA(  quali.sup=8,graph=TRUE)
> image(xgrid,ygrid,zgrid )
> contour(xgrid,ygrid,zgrid,add=TRUE,levels=.5)

图片

也可以考虑这种情况

 rpart( control=rpart.control(minsplit=5))

图片

最后,我们还可以生成更多的树,通过采样获得。这就是bagging的概念:我们boostrap 观测值,生长一些树,然后,我们将预测值进行汇总。在网格上

 > for(i in 1:1200){
+ indice = sample(1:nrow(MYOCARDE),
 + arbre_b = rpart(factor(是否存活)~.,
+}
>Zgrid = Z/1200

可视化

图片

最后,可以使用随机森林算法。

> fore= randomForest(factor(是否存活)~.,
> pF=function(d1,d2) pred2(d1,d2,Minv,fore)
> zgridF=Outer(xgrid,ygrid,pF)
PCA(data,.sup=8,graph=TRUE)
> image(xgrid,ygrid,Zgrid,add=TRUE,
> contour(xgrid,ygrid,zgridF,

图片


点击标题查阅往期内容

R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
R语言有RStan的多维验证性因子分析(CFA)
主成分分析(PCA)原理及R语言实现及分析实例
R语言无监督学习:PCA主成分分析可视化
R语言使用Metropolis- Hasting抽样算法进行逻辑回归
R语言多元Logistic逻辑回归 应用案例
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
R语言基于树的方法:决策树,随机森林,Bagging,增强树
spss modeler用决策树神经网络预测ST的股票
R语言中自编基尼系数的CART回归决策树的实现
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
matlab使用分位数随机森林(QRF)回归树检测异常值
基于随机森林、svm、CNN机器学习的风控欺诈识别模型
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类

数据获取

在下面公众号后台回复“心脏病数****据”,可获取完整数据。


图片

点击文末 “阅读原文”

获取全文完整资料。

本文选自《R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化》。

点击标题查阅往期内容

R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况R语言是否对二分连续变量执行逻辑回归
R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者
R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
R语言用局部加权回归(Lowess)对logistic逻辑回归诊断和残差分析R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
R语言用线性模型进行臭氧预测:加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值R语言Bootstrap的岭回归和自适应LASSO回归可视化
R语言中回归和分类模型选择的性能指标
R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据
R语言计量经济学:虚拟变量(哑变量)在线性回归模型中的应用
R语言 线性混合效应模型实战案例
R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据
R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言建立和可视化混合效应模型mixed effect model
R语言LME4混合效应模型研究教师的受欢迎程度
R语言 线性混合效应模型实战案例
R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题
基于R语言的lmer混合线性回归模型
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
R语言分层线性模型案例
R语言用WinBUGS 软件对学术能力测验(SAT)建立分层模型
使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
SPSS中的多层(等级)线性模型Multilevel linear models研究整容手术数据
用SPSS估计HLM多层(层次)线性模型模型R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
R语言有RStan的多维验证性因子分析(CFA)
主成分分析(PCA)原理及R语言实现及分析实例
R语言无监督学习:PCA主成分分析可视化
R语言使用Metropolis- Hasting抽样算法进行逻辑回归
R语言多元Logistic逻辑回归 应用案例
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
R语言基于树的方法:决策树,随机森林,Bagging,增强树
spss modeler用决策树神经网络预测ST的股票
R语言中自编基尼系数的CART回归决策树的实现
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
matlab使用分位数随机森林(QRF)回归树检测异常值
基于随机森林、svm、CNN机器学习的风控欺诈识别模型
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类

标签:用主,逻辑,语言,回归,可视化,PCA,数据,模型,决策树
From: https://www.cnblogs.com/tecdat/p/16878584.html

相关文章

  • Android开发实用工具类之数据校验类
    啦啦啦,今天为大家带来开发中会遇到的相关数据校验类,方便你我他~欢迎大家提供更好更棒的方式~代码一波来袭~packagecom.heliquan.test.util;importjava.text.SimpleDateFor......
  • 时序数据库clickhouse_数据库操作
    一:新增列ADDCOLUMN[IFNOTEXISTS]name[type][default_expr][codec][AFTERname_after]ALTERTABLEvisitsONCLUSTERcluster_nameADDCOLUMNcolumn_name1,A......
  • 基本数据类型与字符串类型的转换
    本文主要内容是阐明字符串与基本数据类型之间的转换字符串是引用数据类型下面介绍一下java中的数据类型:  重点:①基本数据类型--->String:语法:将基本数据类型的值+......
  • MySQL-数据库优化
     数据库优化: 数据库设计:1.字段选型:数字类型:tinyintsmalintmediumintintbigint字符类型:charvarchar事件类型:datedate......
  • 【数据结构-树】树及森林的定义
    目录1双亲表示法2孩子表示法2.1孩子表示法2.2双亲孩子表示法3孩子兄弟表示法1双亲表示法dataparent存储某个结点的数据信息存储该结点的双亲所在数组中......
  • 多数据源程序开发
    多数据源程序开发由于读写分离,主从实时备份等业务场景的需要,往往在开发数据库应用时,要配置多个数据源。本文结合springboot,mybatis等应用框架,实现多数据源应用程序。在......
  • Spring Boot数据
    SpringBoot集成了多种数据技术,包括SQL和NoSQL。1.SQL数据库Spring框架为使用SQL数据库提供了广泛的支持,从使用直接JDBC访问到​​JdbcTemplate​​完整的“对象......
  • XtraBackup数据库备份工具
    XtraBackupPerconaXtraBackup是一款基于MySQL的服务器的开源热备份实用程序,在备份过程中不会锁定数据库。它可以备份来自MySQL5.1,5.5,5.6和5.7服务器上的InnoDB,XtraDB和MyI......
  • 数据库保存经纬度采用什么数据类型好?
    如下表所示赤道周长(米)度数(度)40076000360111322.2222111132.222220.11113.2222220.01111.32222220.00111.132222220.00011.113222222......
  • Redis数据结构简介-Set
     Set结构存储值与结构读写能力:包含字符串的无序收集器(unorderedcollection),且数据不重复.添加,获取,移除单个元素;检查一个元素是否存在于集合中;......