如何在Python代码中使用rpy2将R函数作为参数传递

我正在尝试为出色的NMF包创建一个Python接口 – https://cran.r-project.org/web/packages/NMF/NMF.pdf(因为它比Python的选项更加灵活)。到目前为止一切顺利。

我想到的代码如下:

# Python rpy2__NMF = importr("NMF")n_comp_R = robjects.IntVector(n_components)nmf_ro = self.__NMF.nmf(data, n_comp_R, methods, self.seed, nrun=10)

它运行得非常好。Methods是一个我可以使用的可能算法列表:

nmfAlgorithm()

[1] “brunet” “KL” “lee” “Frobenius” “offset”

[6] “nsNMF” “ls-nmf” “pe-nmf” “siNMF” “snmf/r”

[11] “snmf/l”

另一种可能性是使用自定义算法,正如NMF文档中所描述的

# R codemy.algorithm <- function(x, seed, param.1, param.2) {    # 用起始点做一些处理...    # 返回更新后的起始点    return(seed)} res <- nmf(data, n_comp, my.algorithm)

如何使用rpy2来实现这个功能呢?

我尝试了类似这样的代码:

import rpy2.robjects as robjectsmy_algorithm = robjects.r('''function (x, seed, scale.factor = 1) {    pca <- prcomp(t(x), retx = TRUE)    factorization.rank <- nbasis(seed)    cat(seed)    basis(seed) <- abs(pca$rotation[, 1:factorization.rank])    coef(seed) <- t(abs(pca$x[, 1:factorization.rank]))/scale.factor    return(seed)    }''')nmf_ro = __NMF.nmf(data, n_comp_R, my_algorithm.r_repr(), nrun=1)

但它没有成功 =(

NMF算法 – 没有匹配的条目,键为“key=function (x, seed, scale.factor >= 1)

{

pca <- prcomp(t(x), retx = TRUE)

factorization.rank <- nbasis(seed)

cat(seed)

basis(seed) <- abs(pca$rotation[, 1:factorization.rank])

coef(seed) <- t(abs(pca$x[, 1:factorization.rank]))/scale.factor

return(seed)

}” 在注册表中不存在。

请使用以下选项之一: ‘brunet’, ‘Frobenius’, ‘KL’, ‘lee’, ‘ls-nmf’, ‘.M#brunet’, ‘nsNMF’, ‘offset’, ‘pe-nmf’, ‘.R#brunet’, ‘.R#lee’, ‘.R#nsNMF’, ‘.R#offset’, ‘siNMF’, ‘.siNMF’, ‘snmf/l’, ‘snmf/r’.

warnings.warn(x, RRuntimeWarning)

我希望有人能在这里帮帮我?


回答:

原提问者在Github上的NMF项目中得到了回答。正如那里所描述的,你可以将你的新算法定义为一个函数,然后使用setNMFMethod将该函数添加到执行非负矩阵分解的算法注册表中,然后你可以通过名称调用它。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注