使用logistic回归算法进行分类是机器学习中常用的方法之一。在R语言中,我们可以使用glm()
函数来实现logistic回归。本文将介绍如何使用R语言进行logistic回归分析,并通过亚组分析来解释模型结果。同时,我们还将使用森林图来可视化模型的预测效果。
首先,我们需要准备数据。假设我们有一组关于肿瘤是否为恶性的数据,其中包含了一些特征变量,如肿瘤的大小、形状、表面光滑度等。我们可以将这些特征作为自变量,将肿瘤是否为恶性作为因变量。
# 导入所需的包
library(ggplot2)
# 生成模拟数据
set.seed(1234)
size <- rnorm(100)
shape <- rnorm(100)
smoothness <- rnorm(100)
malignant <- rbinom(100, 1, 0.3)
# 创建数据框
data <- data.frame(size, shape, smoothness, malignant)
# 查看前几行数据
head(data)
数据准备好后,我们可以开始进行logistic回归分析。首先,我们需要将数据集划分为训练集和测试集,以便评估模型的性能。我们可以使用caTools
包中的sample.split()
函数来进行随机划分。
# 导入所需的包
library(caTools)
# 随机划分数据集
set.seed(1234)
split <- sample.split(data$malignant, SplitRatio = 0.7)
train <- subset(data, split == TRUE)
test <- subset(data, split == FALSE)
接下来,我们可以使用glm()
函数来拟合logistic回归模型。其中,formula
参数用来指定因变量和自变量的关系,family
参数用来指定使用二项分布的logit链接函数。
# 拟合logistic回归模型
model <- glm(malignant ~ size + shape + smoothness, data = train, family = binomial)
summary(model)
拟合完成后,我们可以使用训练集的数据来进行预测。通过设定一个阈值,我们可以将预测的概率转换为二分类的结果。
# 预测结果
train$predicted <- ifelse(predict(model, type = "response") > 0.5, 1, 0)
# 混淆矩阵
table(train$malignant, train$predicted)
接下来,我们可以使用测试集的数据来评估模型的性能。同样地,我们可以使用混淆矩阵来计算模型的准确率、精确率和召回率等指标。
# 预测结果
test$predicted <- ifelse(predict(model, newdata = test, type = "response") > 0.5, 1, 0)
# 混淆矩阵
table(test$malignant, test$predicted)
# 计算准确率、精确率和召回率
accuracy <- sum(test$predicted == test$malignant) / nrow(test)
precision <- sum(test$predicted & test$malignant) / sum(test$predicted)
recall <- sum(test$predicted & test$malignant) / sum(test$malignant)
accuracy
precision
recall
除了使用指标来评估模型的性能,我们还可以使用森林图来可视化模型的预测效果。森林图可以展示每个特征变量对结果的重要性。
# 导入所需的包
library(randomForest)
# 拟合随机森林模型
rf_model <- randomForest(malignant ~ size + shape + smoothness, data = train)
varImpPlot(rf_model)
通过森林图,我们可以看到各个特征变量的重要性排序。在这个例子中,大小(size)变量对结果的影响最大。
总结起来,本文介绍了如何使用R语言进行logistic回归分析,并通过亚组分析和森林图来解释模型结果。logistic回归是一种常