GOOGLE ADS

viernes, 22 de abril de 2022

max.col con el valor no el índice

Si tengo una matriz:

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

Generado por:

> 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))

Puedo transformarlo en un marco de datos y obtener la columna con el valor más alto:

x <- mymatrix %>% as.data.frame %>% mutate(max_prob = max.col(., ties.method = "last"))

Se ve como esto:

> 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

Si quisiera que max_prob fuera el valor real, no el índice de la columna, ¿cómo lo haría?


Solución del problema

Si no te importa la base R, puedes usar apply. Por ejemplo:

> x <- matrix(rnorm(9), ncol = 3)
> apply(x, 1, max)
[1] 0.246652 1.063506 2.148525

da el máximo de los vectores columna de x.

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...