You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言基于重复K折交叉验证实现非正则化逻辑回归预测饮用水安全性

饮用水可饮用性预测模型实现方案

需求说明

  • 目标:预测饮用水是否可安全饮用
  • 特征字段:Ph、Hardness、Solids、Chloramines
  • 标签字段:Potability
  • 验证策略:5次重复10折交叉验证
  • 基础算法:非正则化逻辑回归,后续需要复用流程实现KNN算法

代码调整说明

你现有代码使用regLogistic作为训练方法,对应带正则化的逻辑回归,只需将训练方法替换为glm即可实现非正则化逻辑回归,caret包的trainControl自带repeatedcv方法,原生支持重复交叉验证逻辑,无需手动实现折叠划分。

完整实现代码

# 加载依赖包
library(caret)
library(readr)

# 读取数据并筛选指定字段
df <- read_csv("water_potability.csv")
df <- df[, c("ph", "Hardness", "Solids", "Chloramines", "Potability")]
# 处理缺失值(可根据需求替换为其他缺失值处理逻辑)
df <- na.omit(df)
# 将标签转换为因子类型(分类任务必须)
df$Potability <- as.factor(df$Potability)

# 配置5次重复10折交叉验证策略
train_control <- trainControl(
  method = "repeatedcv",
  number = 10,
  repeats = 5,
  classProbs = TRUE, # 可选,需要输出分类概率时开启
  summaryFunction = twoClassSummary # 可选,二分类任务使用该评估函数
)

# 训练非正则化逻辑回归模型
logit_model <- train(
  Potability ~ .,
  data = df,
  method = "glm", # 非正则化逻辑回归对应方法
  family = binomial(),
  trControl = train_control,
  metric = "ROC" # 可选,评估指标可替换为Accuracy等
)

# 查看模型结果
print(logit_model)

后续KNN复用方案

只需修改train函数的method参数为knn即可复用整套交叉验证流程,如需调参可新增tuneGrid参数指定待搜索的K值范围,示例如下:

# KNN模型训练示例
knn_tune_grid <- expand.grid(k = c(3,5,7,9,11))
knn_model <- train(
  Potability ~ .,
  data = df,
  method = "knn",
  trControl = train_control,
  tuneGrid = knn_tune_grid,
  preProcess = c("center", "scale") # KNN需要对特征做标准化
)

内容的提问来源于stack exchange,提问作者iftach s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 17:57:02