📜  逻辑回归 - R 编程语言(1)

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

逻辑回归 - R 编程语言

逻辑回归是一种经典的分类算法,它可以用来解决二分类、多分类以及单分类等问题。R 编程语言拥有丰富的工具和库来实现逻辑回归算法,我们将介绍 R 语言中如何使用逻辑回归来训练和预测分类任务。

数据准备

在使用逻辑回归之前,我们需要准备数据。假设我们的任务是预测一个人是否会购买某一产品。我们可以使用如下的数据集:

| 年龄 | 性别 | 收入 | 是否购买 | | --- | --- | --- | --- | | 20 | 男 | 20k | 否 | | 25 | 女 | 30k | 否 | | 30 | 男 | 40k | 是 | | 35 | 女 | 50k | 是 | | 40 | 男 | 60k | 是 | | 45 | 女 | 70k | 是 | | 50 | 男 | 80k | 是 | | 55 | 女 | 90k | 是 |

我们可以将“性别”转换为数值型,例如“男”为 1,“女”为 0。同时,将“是否购买”转换为 0 或 1,其中 0 表示否,1 表示是。

数据分析

在数据准备完成后,我们需要对数据进行分析。首先,我们需要安装和加载所需的 R 库:

install.packages("dplyr")
install.packages("ggplot2")

library(dplyr)
library(ggplot2)
数据读取

我们可以使用 read.table() 函数来读取数据集:

data <- read.table("data.txt", header = TRUE, sep = "\t")

其中 header = TRUE 表示第一行为列名,sep = "\t" 表示用制表符作为列之间的分隔符。

数据探索

为了更好地了解数据,我们可以使用如下的代码来探索数据:

summary(data)
cor(data)
ggplot(data, aes(x = Age, y = Income, color = Purchase)) +
  geom_point(size = 3)

其中 summary() 函数用来显示数据的基本统计信息,cor() 函数用来计算两个变量之间的相关系数。而 ggplot2 库则可以用来绘制数据分布的图形。

数据预处理

在使用逻辑回归进行训练前,我们需要对数据进行预处理。比如,将分类变量转换为数值型,将数据集拆分为训练集和测试集等。

# 将“性别”转换为数值型
data$Gender <- ifelse(data$Gender == "male", 1, 0)
# 将“是否购买”转换为 0 或 1
data$Purchase <- ifelse(data$Purchase == "yes", 1, 0)

# 拆分数据为训练集和测试集
train_rows <- sample(nrow(data), 0.7 * nrow(data))
train <- data[train_rows, ]
test <- data[-train_rows, ]
逻辑回归模型

在完成数据预处理后,我们可以开始构建逻辑回归模型进行学习和预测。

模型训练

使用 glm() 函数可以训练一个逻辑回归模型:

model <- glm(Purchase ~ Age + Gender + Income, data = train, family = binomial(link = "logit"))

其中 Purchase ~ Age + Gender + Income 表示我们使用“年龄”、“性别”和“收入”作为自变量,以“是否购买”作为因变量进行逻辑回归。

参数 family = binomial(link = "logit") 则表示使用逻辑回归函数进行建模。

模型预测

使用 predict() 函数可以对测试数据进行预测:

pred <- predict(model, newdata = test, type = "response")

其中 predict() 函数的参数 newdata = test 表示我们要对测试集进行预测,type = "response" 表示输出预测的概率值,而不是默认的对数几率值。

模型评估

在完成模型训练和预测后,我们需要对模型进行评估。这里我们选择使用混淆矩阵和 ROC 曲线来评价模型的性能。

混淆矩阵

我们可以使用 table() 函数和 caret 库来计算混淆矩阵。

table(Predicted = pred > 0.5, Actual = test$Purchase)

其中 pred > 0.5 表示将预测概率值大于 0.5 的样本归为正类,否则归为负类。

ROC 曲线

我们可以使用 ROCR 库来绘制 ROC 曲线:

library(ROCR)

pred_obj <- prediction(pred, test$Purchase)
perf_obj <- performance(pred_obj, measure = "tpr", x.measure = "fpr")
plot(perf_obj)

其中 prediction() 函数用来创建一个 ROCR 需要的 ROCRpred 对象,performance() 函数用来计算 ROC 数据,plot() 函数用来绘制 ROC 曲线。

结论

逻辑回归算法是一种简单而又有效的二分类算法,它可以用来处理很多实际问题。在 R 编程语言中,使用逻辑回归构建分类模型也非常容易。我们可以通过数据准备、数据分析、数据预处理、模型训练、模型预测和模型评估来完成整个分类任务。