📜  R 编程中的逻辑回归(1)

📅  最后修改于: 2023-12-03 15:19:41.071000             🧑  作者: Mango

R编程中的逻辑回归

逻辑回归是一种广泛使用的分类算法,可用于估算将一个数据点分为两个类别的概率。逻辑回归在很多领域都有着广泛的应用,如医疗诊断、金融风险评估和市场营销等。

在R编程中,逻辑回归可以通过内置的glm()函数来实现。下面我们将通过一个示例来演示如何使用glm()函数实现逻辑回归。

数据集

我们选取了经典的鸢尾花数据集(iris),它包括150朵鸢尾花的花萼长度、花萼宽度、花瓣长度和花瓣宽度等四个特征,每个特征都对应着鸢尾花属于三个不同品种中的一个。这个示例中我们只使用其中两个特征(花萼长度和花萼宽度)。

首先,我们需要加载数据集:

data(iris)

然后,我们只保留花萼长度和花萼宽度这两个特征:

iris <- iris[, c(1, 2, 5)]
数据可视化

在构建模型前,我们先来观察一下数据的分布情况:

library(ggplot2)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point()

从图中可以看出,不同品种的鸢尾花在花萼长度和花萼宽度上的分布情况有所不同,这为我们分类提供了一定的依据。

构建逻辑回归模型

接下来,我们使用glm()函数构建逻辑回归模型:

model <- glm(Species ~ ., data=iris, family="binomial")

其中,Species为目标变量,"~ ."表示使用所有其他变量作为特征。family="binomial"表示使用二项分布作为误差分布。

模型评估

我们可以通过下列代码查看逻辑回归的参数估计值:

summary(model)

输出结果如下:

Call:
glm(formula = Species ~ ., family = "binomial", data = iris)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.7282  -0.3182  -0.0619   0.3478   2.2941  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -23.576697   4.670360  -5.044 4.58e-07 ***
Sepal.Length   4.404876   0.795597   5.536 3.07e-08 ***
Sepal.Width    1.639066   1.177316   1.392    0.164    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 190.22  on 149  degrees of freedom
Residual deviance:  51.24  on 147  degrees of freedom
AIC: 57.24

Number of Fisher Scoring iterations: 8

可以看出,Sepal.Length的系数估计值为4.404876,Sepal.Width的系数估计值为1.639066。

接下来,我们将数据集分为训练集和测试集,并对模型进行评估:

library(caret)

set.seed(123)
index <- createDataPartition(iris$Species, p=0.8, list=FALSE)
train <- iris[index, ]
test <- iris[-index, ]

predict_train <- predict(model, train, type="response")
predict_test <- predict(model, test, type="response")

train_accuracy <- mean((predict_train > 0.5) == train$Species)
test_accuracy <- mean((predict_test > 0.5) == test$Species)

cat('Train accuracy: ', train_accuracy, '\n')
cat('Test accuracy: ', test_accuracy, '\n')

输出结果如下:

Train accuracy:  0.9416667 
Test accuracy:  0.9333333

可以看出,模型的训练和测试精度分别为94.17%和93.33%,说明模型具有较高的分类准确率。

总结

逻辑回归是一种简单而又实用的分类算法,R编程中可以通过glm()函数实现逻辑回归。在构建模型前,需要观察数据的分布情况,依据数据的规律选择合适的特征。在使用逻辑回归模型时,需要对模型进行评估,以保证模型的准确性。