这一周集中学习R实现的一些算法包,把一些简单的用法归结在这里,后面将继续学习。使用这些包的前提是要对算法熟悉,还好我去年看过几本算法的书,以下为总结:
1、一元线性回归
2、多元线性回归
3、Logistic回归
4、泊松回归
5、关联规则
6、决策树
7、机器集成学习
8、随机森林法则
一、一元线性回归
使用women数据框
#查看数据情况
<span style="font-family: Arial, Helvetica, sans-serif;">str(women)</span>
#先观察散点图,看是否可能存在线性关系
plot(women$weight,women$height)
#抽取一定的数据作为训练集和测试集
ind<-sample(2,nrow(women),replace=TRUE,prob=c(0.7,0.3))
train<-women[ind==1,]
test<-women[ind==2,]
#线性拟合
fit<-lm(weight~height,data=train)
#查看拟合的统计情况
summary(fit)
#画出散点图再加上拟合的曲线
plot(train$weight~train$height)
abline(fit)
#回归诊断
library(gvlma)
gv<-gvlma(fit)
summary(gv)
由回归诊断可知这次回归存在Link Function不满足条件,我们用plot(fit)来查看那个条件不满足:
由四个图可知线性、正态性以及同方差性好像都满足得不是很好,可以考虑加一个二次项:
fit2<-lm(weight~height+I(height^2),data=train)
plot(train$weight,train$height)
lines(train$weight,fitted(fit2))
opar<-par(mfrow=c(2,2))
plot(fit2)
这次看上去正态性效果好,但线性和同方差性满足不到,再次用
gv2-gvlma(fit2)查看,同样发现存在假设不接受,那我们再次考虑加一个3次项拟合:
fit3<-lm(weight~height+I(height^2)+I(height^3),data=train)
Gv3<-gvlma(fit3)
summary(gv3)
这次假设都接受。
我们看看plot(fit3)
#预测
weight_pre<-predict(fit3,test)
> test$weight
[1] 115 117 123 126 129 135 139 164
画出实际和预测的图像:
plot(test$height,weight_pre,col="red",pch=17,type="b")
lines(test$