【问题标题】:Python: How to migrate a R function that applies SVM function for group by in data framePython:如何迁移将 SVM 函数应用于数据框中的分组依据的 R 函数
【发布时间】:2026-01-24 08:50:01
【问题描述】:

我有一个看起来像这样的数据框 (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 分类器,用于根据相对较小的样本(最大行数:5K)对每个国家/地区的值进行异常值检测,并且我指出它是否是每行中的异常值。所以我的输出是一个带有额外逻辑列的数据框,表明它是否是异常值:

    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

我在 R 中使用以下代码:

library(e1071)

SVM_f = function(x,limit=5000){
N = min(c(limit,length(x)))
mdl = svm(x[sample(length(x),N)],
nu=0.98, type="one-classification", kernel="polynomial")
predict(mdl,x)
}

res = by(df,df$Country,function(x){
data.frame(x,SVM = SVM_f(x$Value))
})

res = do.call(rbind,res)

现在我需要将此代码迁移到 Python - 请协助。

【问题讨论】:

  • 您目前在哪里尝试进行此翻译?
  • 我目前对每个国家/地区的数据子集运行 SVC 算法,然后将它们附加在一起,但效率不高。

标签: python dataframe pandas-groupby svm


【解决方案1】:

您可以只使用Rmarkdown,在这里您可以使用在 R 环境中执行的本机 python 语言,因此您可以保留上面的 R 代码。

这里是更具体的link

【讨论】:

  • 你能说得更具体些吗?因为我需要在 Python 环境中使用它。 (木星)
  • 你可以使用 R 中的等价物代替 jupyter,它更强大,因为你可以使用其中几乎所有的语言。您必须使用某些表达标记来开始和结束您选择的语言。如果这不起作用,您能否详细说明为什么需要 jupyter?
  • 很遗憾,我只能使用 Jupyter。
  • 如我所问:你能解释一下原因吗?你的最终目标是什么?
  • 我的最终目标是根据其价值的 SVM 分类(无监督)为每个国家/地区指明哪个 id 异常。明白了吗?