2017-09-11 1 views
0

I有しキャレットパッケージを使用してデータ・フレームからモデルを構築するように設計されている設定下記Rスクリプト:私はこのコードの機能を有することができるようにしたい R-キャレット関数を使用してモデルを構築するためにrpy2を使用するPythonスクリプトをどのようにフォーマットするのですか?

は内で発現さ

library(caret) 
library(broom) 

data<- data.table("mydata.csv") 

splitprob <- 0.8 

traintestindex <- createDataPartition(data$fluorescence, p=splitprob, list=F) 
testset <- data[-traintestindex,] 
trainingset <- data[traintestindex,] 

model <- train(fluorescence~., trainingset, method = "glmStepAIC", preProc = c("center","scale"), trControl = cvCtrl) 

final_model<- tidy(model$finalModel) 

write.csv(tidy, "model_glm.csv") 
Pythonスクリプト。パンダのデータフレームが生成された後、Rデータフレームに変換され、その後、上のRスクリプトと同じパラメータに設定されたキャレットの列関数を実行します。

import pandas as pd 
from rpy2.robjects import r 
import sys 
import rpy2.robjects.packages as rpackages 
from rpy2.robjects.vectors import StrVector 
from rpy2.robjects import r, pandas2ri 

pandas2ri.activate() 
caret = rpackages.importr('caret') 
broom= rpackages.importr('broom') 

my_data= pd.read_csv("my_data.csv") 
r_dataframe= pandas2ri.py2ri(my_data) 

preprocessing= ["center", "scale"] 

center_scale= StrVector(preprocessing) 

cvCtrl = caret.trainControl(method = "repeatedcv", number= 20, repeats = 100) 

model_R= caret.train("fluorescence~.", data= r_dataframe, method = "glmStepAIC", preProc = center_scale, trControl = cvCtrl) 

print(model_R.finalModel) 

しかし、このスクリプトは明らかに適切に行model_R= caret.train("fluorescence~., r_dataframe, method = "glmStepAIC", preProc = center_scale, trControl = cvCtrl")でrpy2利回りSyntaxError: invalid syntaxとPythonスクリプトを実行するために私の試みとして、構成されていません。私はドキュメント(ソース:https://rpy2.github.io/doc/latest/html/introduction.html?highlight=linear%20model)で与えられた構文に従おうとしましたが、このようなコードを設定する方法はまばらです。

データフレームからモデルを構築できるように、コードを機能させるには、Pythonコードを修正する必要がありますか?

答えて

0

私はrpy2経由でキャレットの機能を実装するためのフォーマットを考え出し:

import pandas as pd 
from rpy2.robjects import r 
import sys 
import rpy2.robjects.packages as rpackages 
from rpy2.robjects.vectors import StrVector 
from rpy2.robjects import r, pandas2ri 

pandas2ri.activate() 
caret = rpackages.importr('caret') 
broom= rpackages.importr('broom') 

my_data= pd.read_csv("my_data.csv") 
r_dataframe= pandas2ri.py2ri(my_data) 

preprocessing= ["center", "scale"] 
center_scale= StrVector(preprocessing) 

#these are the columns in my data frame that will consist of my predictors in the model 
predictors= ['predictor1','predictor2','predictor3'] 
predictors_vector= StrVector(predictors) 

#this column from the dataframe consists of the outcome of the model 
outcome= ['fluorescence'] 
outcome_vector= StrVector(outcome) 

#this line extracts the columns of the predictors from the dataframe 
columns_predictors= r_dataframe.rx(True, columns_vector) 

#this line extracts the column of the outcome from the dataframe 
column_response= r_dataframe.rx(True, column_response) 

cvCtrl = caret.trainControl(method = "repeatedcv", number= 20, repeats = 100) 

model_R= caret.train(columns_predictors, columns_response, method = "glmStepAIC", preProc = center_scale, trControl = cvCtrl) 

print(model_R.rx('finalModel')) 
関連する問題