【问题标题】:Reproducing R glmnet code in python with rpy2使用 rpy2 在 python 中重现 R glmnet 代码
【发布时间】:2017-10-25 22:32:29
【问题描述】:

我不确定如何使用 rpy2 在 python 中重现以下 R 代码。我不确定在训练模型时如何实现 R 语法 type.measure="class",并且我在 python 中的尝试中缺少 R 代码的最后两行。

library("foreach")
library("glmnet")
library(datasets)
data(iris)

y <- as.numeric(iris[,5])
X <- iris[1:4]

model_lambda <- cv.glmnet(as.matrix(X), as.factor(y), alpha=0,
family="multinomial", type.measure="class")
best_s  <- model_lambda$lambda.1se
prediction <- predict(model_lambda,newx=as.matrix(X), type="class" , s=best_s)

还有未完成的python代码:

import numpy as np
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
importr('foreach')
glmnet = importr('glmnet')
import rpy2.robjects.numpy2ri as numpy2ri
numpy2ri.activate()

from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
model_lambda = glmnet.cv_glmnet(X, robjects.FactorVector(y), alpha=1, family="multinomial")

【问题讨论】:

    标签: python r rpy2 glmnet


    【解决方案1】:

    如果R函数中的参数在函数签名中定义,rpy2的importr会将点转换为下划线。否则,可以使用python运算符**(见http://rpy2.readthedocs.io/en/version_2.8.x/robjects_functions.html#functions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 2016-01-15
      • 2014-10-19
      相关资源
      最近更新 更多