📅  最后修改于: 2023-12-03 15:19:41.071000             🧑  作者: Mango
逻辑回归是一种广泛使用的分类算法,可用于估算将一个数据点分为两个类别的概率。逻辑回归在很多领域都有着广泛的应用,如医疗诊断、金融风险评估和市场营销等。
在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()函数实现逻辑回归。在构建模型前,需要观察数据的分布情况,依据数据的规律选择合适的特征。在使用逻辑回归模型时,需要对模型进行评估,以保证模型的准确性。