У меня есть кадр данных (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 - пожалуйста, помогите.