【发布时间】:2020-05-24 20:05:10
【问题描述】:
我有一个看起来像这样的数据框 (df):
Value Country ID
1 21 RU AAAU9001025
2 24 NG AAAU9001848
3 17 EG ACLU2799370
4 2 EG ACLU2799370
5 56 RU ACLU2799370
我想针对每个国家/地区的值运行 SVM 分类器以检测异常值,并且基于相对较小的样本,我想指出它是否是每一行中的异常值。所以我的输出将是一个带有额外逻辑列的数据框,表明它是否是异常值:
Value Country ID SVM
1 21 RU AAAU9001025 FALSE
2 24 NG AAAU9001848 FALSE
3 17 EG ACLU2799370 FALSE
4 2 EG ACLU2799370 TRUE
5 56 RU ACLU2799370 TRUE
6 25 EG AMFU3022141 FALSE
我正在使用以下代码,但我无法创建所需的数据框:
lapply(split(df,df$Country),
function(x) {(e1071::svm(x$Value[1:(ifelse(nrow(x)<50000,nrow(x),50000))],
nu=0.98, type="one-classification", kernel="polynomial"))
})
请帮我解决这个问题,谢谢!
【问题讨论】: