关于算法:R语言用主成分PCA-逻辑回归决策树随机森林分析心脏病数据并高维可视化

56次阅读

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

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

在探讨分类时,咱们常常剖析二维数据(一个自变量,一个因变量)。但在理论生存中,有更多的察看值,更多的解释变量。随着两个以上的解释变量,它开始变得更加简单的可视化。

数据

咱们应用心脏病数据,预测急诊病人的心肌梗死,蕴含变量:

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

其中咱们有急诊室的察看后果,对于心肌梗塞,咱们想理解谁存活下来了,以失去一个预测模型。然而在运行一些分类器之前,咱们先把咱们的数据可视化。

主成分 PCA

因为咱们有 7 个解释变量和咱们的因变量(生存或死亡),咱们能够去做一个 PCA。

acp=PCA(X)

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

 是否存活 = 是否存活 =="存活")*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,


最受欢迎的见解

1.从决策树模型看员工为什么到职

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

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

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

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

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

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

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

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

正文完
 0