2017-01-25 62 views
0

我與glmnet做套索在R.我有套索coefs out$beta如何從R中的glmnet獲取coefs名稱?

輸入:

x1 0.5744207722 
x2 -0.3575682570 
x3 -0.0995794334 

我怎樣才能提取變量的名字嗎?

所需的輸出: x1, x2,x3

我試過

  1. $
  2. as.data.frame
  3. as.matrix

但他們沒有轉換coefs分成n行2列矩陣。他們仍然是一個載體,x1 0.5744207722

我不能手動完成。我有超過1000個變量和更多模型可以運行。我不會把它寫在我的磁盤上,然後再讀回來。

+0

你看看文檔爲'glmnet'?第一個例子展示瞭如何使用'coef()'提取每個變量的係數。 – Barker

+0

我想要名稱'x1','x2'不是係數'0.5744207722','-0.3575682570' –

+0

然後'rownames(coef(fit))'。如果這樣做不能達到你想要的效果,請給出一個具有輸入和期望輸出的可重現示例。 – Barker

回答

1

根據您上面的輸入,您似乎指定了帶有單個lambda值的glmnet調用。

在這種特殊情況下,您可以提取像這樣的係數的名稱:names(out$beta[, 1][out$beta[, 1] != 0])。請注意,僅提取非零beta的名稱,這在Lasso執行特徵縮減時在此處應用Lasso時很有意義。

最小重複的例子是這樣的: out <- glmnet(as.matrix(mtcars[-1]), mtcars[["mpg"]], lambda = 1)