reticulate не работает с фреймом R-Data и функцией fit () из Python (TypeError: объект 'float' нельзя интерпретировать как целое число) - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь взять фрейм данных R и использовать его с пакетом reticulate. Я не смог найти ответ в интернете. извините, если это основной вопрос.

# Sample Data
n <- 5000
n_outlier <- .05 * n

set.seed(11212)
inlier <- mvtnorm::rmvnorm(n, mean = c(0,0))
outlier <- mvtnorm::rmvnorm(n_outlier, mean = c(20, 20))
testdata <- rbind(inlier, outlier)
smp_size <- floor(0.5 * nrow(testdata))
train_ind <- sample(seq_len(nrow(testdata)), size = smp_size)
train_lof <-as.data.frame(testdata[train_ind, ])
test_lof <- as.data.frame(testdata[-train_ind, ])

sklearn.neighbors <- import("sklearn.neighbors")

lof1 = sklearn.neighbors$LocalOutlierFactor(n_neighbors=15)
lof1$fit(train_lof)

выдает следующую ошибку:

Ошибка в py_call_impl (вызываемый, точки $ args, точки $ ключевые слова): TypeError: объект с плавающей точкой не может быть интерпретирован как целое число

1 Ответ

0 голосов
/ 10 мая 2018

При работе с reticulate вы должны быть явно указаны с вашими типами (например, целые числа против чисел или списков против векторов). Функция ожидает целое число, поэтому вы должны использовать as.integer():

lof1 = sklearn.neighbors$LocalOutlierFactor(n_neighbors=as.integer(15))
...