我试着用一个R数据框和“网状”软件包一起使用。我在网上找不到答案。对不起,如果这是一个基本问题。

# 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,点$keywords):
TypeError:“float”对象不能解释为整数

最佳答案

在使用reticulate时,必须明确使用类型(例如,整数与浮点,或列表与向量)。该函数需要一个整数,因此必须使用as.integer()

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

关于python - 网状结构不适用于Python中的R-Data frame和fit()函数(TypeError:“float”对象无法解释为整数),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50272140/

10-11 07:37