如果我有一个矩阵:max.col与值而不是索引
mod_xgb_softprob$pred[1:3,1:3]
[,1] [,2] [,3]
[1,] 6.781361e-04 6.781361e-04 6.781422e-04
[2,] 2.022457e-07 2.022457e-07 4.051039e-07
[3,] 6.714367e-04 6.714367e-04 6.714399e-04
通过生成:
> dput(mod_xgb_softprob$pred[1:3,1:3])
structure(c(0.00067813612986356, 2.02245701075299e-07, 0.000671436660923064,
0.00067813612986356, 2.02245701075299e-07, 0.000671436660923064,
0.000678142241667956, 4.05103861567113e-07, 0.000671439862344414
), .Dim = c(3L, 3L))
我可以转化成数据帧和最高得到列值:
x <- mymatrix %>% as.data.frame %>% mutate(max_prob = max.col(., ties.method = "last"))
是这样的:
> x
V1 V2 V3 max_prob
1 6.781361e-04 6.781361e-04 6.781422e-04 3
2 2.022457e-07 2.022457e-07 4.051039e-07 3
3 6.714367e-04 6.714367e-04 6.714399e-04 3
如果我想max_prob是实际值而不是列索引,我该怎么做?
矩阵indexing:'mod_xgb_softprob [cbind(1:nrow(mod_xgb_softprob),max.col(mod_xgb_softprob))]'。 – lmo
这是[高度相关的帖子](https://stackoverflow.com/questions/3071271/add-a-variable-to-a-data-frame-containing-max-value-of-each-row/46060812# 46060812)。其中,我为这些方法添加了不同大小数据帧的时间。 – lmo