使用R完成逻辑斯蒂回归分类

来源:互联网 发布:方舟捏脸美女数据 编辑:程序博客网 时间:2024/05/07 18:25

直接上代码,如下:

data_sample <- iris[51:150,];m <- dim(data_sample)[1]  #获取数据集记录条数val <- sample(m, size =round(m/3), replace = FALSE, prob= rep(1/m, m))  #抽样,选取三分之二的数据作为训练集。  iris.learn <- data_sample[-val,]  #选取训练集  iris.valid <- data_sample[val,]   #选取验证集 #调用glm函数训练逻辑斯蒂二元模型#glm()提供正态、指数、gamma、逆高斯、Poisson、二项分布。我们的logistic回归使用的是二项分布族binomial。Binomial族默认连接函数为logit,可设置为probit。logit.fit <- glm(Species~Petal.Width+Petal.Length,family = binomial(link = 'logit'),data = iris.learn);#生成测试数据集,实际上直接使用iris.validdfrm <- data.frame(Petal.Width=iris.valid$Petal.Width,Petal.Length=iris.valid$Petal.Length);real_sort <- iris.valid$Species;  #测试数据集实际类别prdict_res <- predict(logit.fit, type="response", newdata=dfrm);  #预测数据产生概率data.frame(predict=prdict_res, real=real_sort);  #查看数据产生概率和实际分类的关系data.frame(predict=ifelse(prdict_res>0.5, "virginica", "versicolor"), real=real_sort);  #根据数据产生概率生成预测分类table(data.frame(predict=ifelse(prdict_res>0.5, "virginica", "versicolor"), real=real_sort));  #计算分类准确度


最后计算出来的分类准确度如下,分类准确度还是不错的:

       real
predict      setosa versicolor virginica
  versicolor      0         16         0
  virginica       0          2        15


程序包mlogit提供了多项logit的模型拟合函数,参见,有空再学习下。先睡觉...Zz.

1 0