2

さまざまなレベルの因子 (したがって、さまざまな数のダミー予測子) を含む複数の予測子を含むスパース行列に訓練された glmnet モデルがあるとします。

df <- data.frame(y=runif(10), catVar=as.factor(sample(0:5,10,TRUE)))
A <- model.matrix(y ~ catVar,df) 
train <- cv.glmnet(A[,c('catVar3', 'catVar4')], df$y)
coef(train, s="lambda.min")

ダミーの係数/値、または全体的な数式を変換するための最良の (最も効率的な) アプローチは、ダミーの列がスパース形式 (さまざまな要因の 1 つの列のみ) ではないかのように?

編集:ダミー係数とその勾配/値を、レベルごとにさまざまな勾配を持つ個々の係数に変換する必要があります。

4

3 に答える 3

0

スパース行列については別の回答。トリプレットに変換して、インデックスを直接読み取ることができます。

require(Matrix)                                                                  
X <- Diagonal(10)[sample(10,20,T), ]                                             
factor(as(X, "TsparseMatrix")@j, labels=LETTERS[1:10])                                    

行列が転置されて保存されている場合は、 を使用できるはずです@i

于 2015-09-10T03:27:23.303 に答える
0

インデックスのベクトルを取得するために使用max.colし、次に係数に変換して、レベルを列名に設定します。

編集例:

X <- model.matrix(~group-1, sleep)                                               

factor(max.col(X), labels=colnames(X))                                           
于 2015-09-10T03:02:34.867 に答える