如何从缩减包装器在R中执行PaCMAP降维?

2024-10-04 07:27:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在R中实现PaCMAP降维,如本文档https://rdrr.io/github/milescsmith/dim.reduction.wrappers/man/pacmap.html所示,pacmap函数是https://github.com/YingfanWang/PaCMAP中原始python 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


Tags: csvhttpsnone示例dataasneighborsdots
1条回答
网友
1楼 · 发布于 2024-10-04 07:27:02

我决定在R中使用网状结构重新创建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)

相关问题 更多 >