3

我想使用 R 中的 glmnet 来解决分类问题。

样本数据如下:

y,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11
1,0.766126609,45,2,0.802982129,9120,13,0,6,0,2
0,0.957151019,40,0,0.121876201,2600,4,0,0,0,1
0,0.65818014,38,1,0.085113375,3042,2,1,0,0,0

y 是二元响应(0 或 1)。

我使用了以下 R 代码:

prr=cv.glmnet(x,y,family="binomial",type.measure="auc")
yy=predict(prr,newx, s="lambda.min")

然而,glmnet 预测的 yy 分散在 [-24,5] 之间。

如何将输出值限制为 [0,1],从而使用它来解决分类问题?

4

2 回答 2

6

我再次阅读了手册,发现 predict 方法中的 type="response" 会产生我想要的结果:

lassopre2=predict(prr,newx, type="response")

将输出 [0,1] 之间的值

于 2013-09-16T08:26:42.870 回答
-1

如果我们只是输入对象名称或使用打印功能,则会显示每一步 glmnet 路径的摘要:

  print(fit)

  ## 
  ## Call:  glmnet(x = x, y = y) 
  ## 
  ##       Df   %Dev  Lambda
  ##  [1,]  0 0.0000 1.63000
  ##  [2,]  2 0.0553 1.49000
  ##  [3,]  2 0.1460 1.35000
  ##  [4,]  2 0.2210 1.23000

它从左到右显示非零系数的数量 (Df)、解释的偏差百分比 (%dev) 和 λ 的值

(拉姆达)。尽管默认情况下 glmnet 调用 100 个 lambda 值,但如果 `%dev% 没有从一个 lambda 充分更改到下一个(通常在路径的末尾附近),程序会提前停止。

我们可以在一个或多个 λ 处获得实际系数

的序列范围内:

  coef(fit,s=0.1)

  ## 21 x 1 sparse Matrix of class "dgCMatrix"
  ##                     1
  ## (Intercept)  0.150928
  ## V1           1.320597
  ## V2           .       
  ## V3           0.675110
  ## V4           .       
  ## V5          -0.817412

这是Hastie的更多信息的原始解释

于 2016-03-02T17:48:48.593 回答