R中logistics回归分析以及K-CV

K倍交叉验证是对模型的性能进行评估,可以用来防止过拟合,比如对决策树节点数目的确定或是回归模型参数个数地决定等情况。
1.对于一些特殊数据来说,在调用glm()方法时候,会出现两种常见错误
Warning: glm.fit: algorithm did not converge
Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
Warning messages:
1: glm.fit:算法没有聚合
2: glm.fit:拟合機率算出来是数值零或一
针对第一种,一般是因为在回归拟合的时候次数少,control=list(maxit=100)修改次数为100即可;
第二种一般就是数据已经分散好了,可以理解为一种过拟合,由于数据的原因,在回归系数的优化搜索过程中,使得分类的种类属于某一种类(y=1)的线性拟合值趋于大,分类种类为另一 类(y=0)的线性拟合值趋于小。
以鸢尾花数据为例子,
这里写代码片
testdata$y <- c(1:80)
qplot(pl,y,data =testdata,colour =factor(species));
R中logistics回归分析以及K-CV_第1张图片
这种情况直接就可以划分了,无需回归分析

2.建立好回归模型,调用predict()进行评价,根据包里面的解释:
R中logistics回归分析以及K-CV_第2张图片
默认是线性预测因子的尺度; 若是
type= “response“<==>“响应”是响应变量的规模。
所以predict(log.glm) 返回的是”β0+β1x1+…βmxm”,而predict(log.glm,typee= “response“)返回的是P值。下图是我做的认为验证
这里写图片描述

这里写图片描述

R中logistics回归分析以及K-CV_第3张图片

3。下来就是通过K倍交叉验证评价模型好坏了,cv.glm(log.glm,trian,K=10)
R中logistics回归分析以及K-CV_第4张图片
可以得到错误率;

4.最后可以画ROC曲线,由于cv.glm只有错误率没有P值,所以自己编了一个程序作了CV,得到图为:
R中logistics回归分析以及K-CV_第5张图片

有一个疑问,就是做ROC曲线的时候,是不是把test_data分别带入相同模型五个不同的参数中得P值(以5倍交叉验证为例)??

自己也是蛮笨的,为了这个事情搞了一天半,加油吧,感情上是个loser,学习上盼望有点建树吧。

你可能感兴趣的:(数据挖掘,生物统计)