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

如何将数据框列表传入R的svm_class函数并批量计算误分类率?

解决方法:将SVM分类函数应用到重采样数据列表

核心思路

使用R的列表遍历工具(基础R的lapply或purrr包的map),对resampling返回的数据框列表逐个调用svm_class函数,收集所有误分类率结果。


步骤1:生成重采样数据列表

先调用你的resampling函数生成目标数据列表(替换your_data_frame为实际数据框):

# 示例:生成10个包含100行的重采样数据框
sample_list <- resampling(n = 100, N = 10, rep = TRUE, db = your_data_frame)

步骤2:应用SVM分类函数到列表每个元素

方法1:基础R的lapply

定义SVM分类公式后,用匿名函数传递参数给svm_class:

# 定义分类公式(替换y为你的因变量,.代表其余所有自变量)
svm_form <- y ~ .

# 遍历列表,计算每个样本的误分类率
misrate_results <- lapply(sample_list, function(df) {
  svm_class(form = svm_form, db = df)
})

方法2:purrr包的map(更简洁)

如果你习惯用tidyverse工具,purrr::map可以简化代码:

library(purrr)

# 同样传入公式,map会自动将列表元素作为第二个参数传递给svm_class
misrate_results <- map(sample_list, svm_class, form = svm_form)

可选优化:移除重采样添加的id_sample列

resampling函数会给数据框添加id_sample列,若该列不属于你的建模变量,建议在调用svm_class前移除,避免干扰模型:

# 遍历列表,移除id_sample列
sample_list_cleaned <- lapply(sample_list, function(df) {
  df[, !names(df) %in% "id_sample"]
})

# 再用清理后的列表计算误分类率
misrate_results <- lapply(sample_list_cleaned, function(df) {
  svm_class(form = svm_form, db = df)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:17:16