簡體   English   中英

對R中的序數邏輯回歸進行交叉驗證(使用rpy2)

[英]Cross-validating an ordinal logistic regression in R (using rpy2)

我正在嘗試在Python中創建一個預測模型,通過交叉驗證比較幾種不同的回歸模型。 為了適應序數邏輯模型( MASS.polr ),我必須通過rpy2與R接口如下:

from rpy2.robjects.packages import importr
import rpy2.robjects as ro

df = pd.DataFrame()
df = df.append(pd.DataFrame({"y":25,"X":7},index=[0]))
df = df.append(pd.DataFrame({"y":50,"X":22},index=[0]))
df = df.append(pd.DataFrame({"y":25,"X":15},index=[0]))
df = df.append(pd.DataFrame({"y":75,"X":27},index=[0]))
df = df.append(pd.DataFrame({"y":25,"X":12},index=[0]))
df = df.append(pd.DataFrame({"y":25,"X":13},index=[0]))

# Loads R packages. 
base = importr('base')
mass = importr('MASS')

# Converts df to an R dataframe. 
from rpy2.robjects import pandas2ri
pandas2ri.activate()
ro.globalenv["rdf"] = pandas2ri.py2ri(df) 

# Makes R recognise y as a factor. 
ro.r("""rdf$y <- as.factor(rdf$y)""")

# Fits regression. 
formula = "y ~ X"    
ordlog = mass.polr(formula, data=base.as_symbol("rdf"))
ro.globalenv["ordlog"] = ordlog
print(base.summary(ordlog))

到目前為止,我主要使用sklearn.cross_validation.test_train_splitsklearn.metrics.accuracy_score比較我的模型, sklearn.metrics.accuracy_score的數字從0到1,代表訓練集模型預測測試集值的准確性。

如何使用rpy2MASS.polr復制此測試?

通過使用rms.lrm重新擬合模型最終解決了問題,該模型提供了validate()函數(在此示例之后進行解釋)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM