如何从 Reduction Wrappers 中执行 PaCMAP 降维?

How to Execute PaCMAP Dimension Reduction in R from Reduction Wrappers?

我正在尝试在 R 中实现 PaCMAP 降维,如本文档中所示 https://rdrr.io/github/milescsmith/dim.reduction.wrappers/man/pacmap.html, the pacmap function was a wrapper function of the original python pacmap in https://github.com/YingfanWang/PaCMAP

下面是在 Python

中应该如何完成的一些示例
import pandas as pd
import pacmap
fraud_data = pd.read_csv(r'C:/Users/User/Desktop/Open Source Dataset/fraud_data.csv')
embedding = pacmap.PaCMAP(n_dims=2, n_neighbors=None, MN_ratio=0.5, FP_ratio=2.0) 
X_transformed = embedding.fit_transform(fraud_data.values, init="pca")

这是我在 R 版本 4.1.0 中尝试但无济于事的方法:

library(ReductionWrappers)
fraud_data <- read.csv("fraud_data")
pacmap_mapping <- pacmap(as.matrix(fraud_data), n_dims=2, n_neighbors=2, MN_ratio=1, FP_ratio=2) 

Error in py_call_impl(callable, dots$args, dots$keywords) : 
  TypeError: 'float' object cannot be interpreted as an integer 

pacmap_mapping <- pacmap(fraud_data, n_dims=2, n_neighbors=2, MN_ratio=1, FP_ratio=2) 

 Error in py_call_impl(callable, dots$args, dots$keywords) : 
  TypeError: '(0, slice(None, None, None))' is an invalid key

我不明白如何解决这个错误,因为已经完成了最少的示例,我需要什么输入才能让它工作?

这是用于执行此示例的数据:https://drive.google.com/file/d/1Yt4V1Ir00fm1vQ9futziWbwjUE9VvYK7/view?usp=sharing

我决定在 R 中使用 Reticulate 重新创建 PaCMAP Python,以使函数在 R 中直接执行:

library(reticulate)
python_pandas <- import("pandas")
python_pacmap <- import("pacmap")
python_numpy <- import("numpy")
fraud_pandas <- reticulate::r_to_py(fraud_data)
nparray <- fraud_pandas$values
nparray <- nparray$astype(python_numpy$float)
embedding <- python_pacmap$PaCMAP(n_dims=2L, n_neighbors=NULL, MN_ratio=0.5, FP_ratio=2.0) 
X_transformed <- embedding$fit_transform(nparray, init="pca")
fraud_transformed <- data.frame(X_transformed)