Ir al contenido principal

Entender la matriz de confusión en R

Este tutorial toma material del curso Machine Learning Toolbox de DataCamp y te permite practicar matrices de confusión en R.
Actualizado 17 sept 2026  · 3 min leer

Explorar con IA

ChatGPTClaudePerplexity

Si quieres hacer nuestro curso Machine Learning Toolbox, aquí tienes el enlace.

Calcular una matriz de confusión

Como viste en el vídeo, una matriz de confusión es muy útil para calibrar la salida de un modelo y revisar todos los posibles resultados de tus predicciones (verdaderos positivos, verdaderos negativos, falsos positivos, falsos negativos).

Antes de crear tu matriz de confusión, necesitas "cortar" las probabilidades predichas en un umbral concreto para convertir probabilidades en predicciones de clase. Puedes hacerlo fácilmente con la función ifelse(), por ejemplo:

class_prediction <-
  ifelse(probability_prediction > 0.50,
         "positive_class",
         "negative_class"
  )

Podrías crear esta tabla de contingencia con la función base de R table(), pero confusionMatrix() de caret además de las tasas básicas de la tabla, devuelve muchas estadísticas adicionales muy útiles. Puedes calcular la matriz de confusión (y sus estadísticas asociadas) usando los resultados predichos y los reales, por ejemplo:

confusionMatrix(predicted, actual)

Instrucciones

  • Convierte las predicciones numéricas p en un vector de predicciones de clase llamado p_class usando un umbral de 0,50. Asegúrate de usar "M" para la clase positiva y "R" para la clase negativa al predecir, para que coincidan con las clases de los datos originales.
  • Genera una matriz de confusión usando p_class, los valores reales del conjunto test y la función confusionMatrix().
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbmxpYnJh cnkoY2FyZXQpXG5saWJyYXJ5KG1sYmVuY2gpXG5kYXRhKFwiU29uYXJcIilcblxuZG93bmxvYWQuZmlsZShcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Fzc2V0cy5kYXRhY2FtcC5jb20vcHJvZHVjdGlvbi9jb3Vyc2VfMTE2My9kYXRhc2V0cy9Tb25hcl90cmFpbi5yZHNcIixcbiAgICAgICAgICAgICAgZGVzdGZpbGUgPSBcIlNvbmFyX3RyYWluLnJkc1wiKVxuZG93bmxvYWQuZmlsZShcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Fzc2V0cy5kYXRhY2FtcC5jb20vcHJvZHVjdGlvbi9jb3Vyc2VfMTE2My9kYXRhc2V0cy9Tb25hcl90ZXN0LnJkc1wiLFxuICAgICAgICAgICAgICBkZXN0ZmlsZSA9IFwiU29uYXJfdGVzdC5yZHNcIilcbnRyYWluIDwtIHJlYWRSRFMoXCJTb25hcl90cmFpbi5yZHNcIilcbnRlc3QgPC0gcmVhZFJEUyhcIlNvbmFyX3Rlc3QucmRzXCIpXG5cbmZpeF9jbGFzcyA8LSBmdW5jdGlvbih4KXtcbiAgaWZlbHNlKHggPT0gXCJNXCIsIDEsIDApXG59XG50cmFpbltbXCJDbGFzc1wiXV0gPC0gZml4X2NsYXNzKHRyYWluW1tcIkNsYXNzXCJdXSlcblxuIyBGaXQgZ2xtIG1vZGVsXG5tb2RlbCA8LSBnbG0oQ2xhc3MgfiAuLCBmYW1pbHkgPSBcImJpbm9taWFsXCIsIHRyYWluKVxuXG4jIFByZWRpY3Qgb24gdGVzdFxucCA8LSBwcmVkaWN0KG1vZGVsLCB0ZXN0LCB0eXBlID0gXCJyZXNwb25zZVwiKSIsInNhbXBsZSI6IlxuIyBJZiBwIGV4Y2VlZHMgdGhyZXNob2xkIG9mIDAuNSwgTSBlbHNlIFI6IG1fb3JfclxuXG5cbiMgQ29udmVydCB0byBmYWN0b3I6IHBfY2xhc3NcblxuXG4jIENyZWF0ZSBjb25mdXNpb24gbWF0cml4Iiwic29sdXRpb24iOiJcbiMgSWYgcCBleGNlZWRzIHRocmVzaG9sZCBvZiAwLjUsIE0gZWxzZSBSOiBtX29yX3Jcbm1fb3JfciA8LSBpZmVsc2UocCA+IDAuNSwgXCJNXCIsIFwiUlwiKVxuXG4jIENvbnZlcnQgdG8gZmFjdG9yOiBwX2NsYXNzXG5wX2NsYXNzIDwtIGZhY3RvcihtX29yX3IsIGxldmVscyA9IGxldmVscyh0ZXN0W1tcIkNsYXNzXCJdXSkpXG5cbiMgQ3JlYXRlIGNvbmZ1c2lvbiBtYXRyaXhcbmNvbmZ1c2lvbk1hdHJpeChwX2NsYXNzLCB0ZXN0W1tcIkNsYXNzXCJdXSkiLCJzY3QiOiJcbnRlc3Rfb2JqZWN0KFwicF9jbGFzc1wiLCB1bmRlZmluZWRfbXNnID0gXCJEb24ndCBmb3JnZXQgdG8gY3JlYXRlIGBwX2NsYXNzYCwgYSBmYWN0b3Igb2YgY2xhc3MgcHJlZGljdGlvbnMuXCIsIGluY29ycmVjdF9tc2cgPSBcIkRpZCB5b3UgY3JlYXRlIGBwX2NsYXNzYCB3aXRoIGxldmVscyBgJ00nYCBhbmQgYCdSJ2A/XCIpXG50ZXN0X2Z1bmN0aW9uKFwiY29uZnVzaW9uTWF0cml4XCIsIGFyZ3MgPSBjKFwiZGF0YVwiLCBcInJlZmVyZW5jZVwiKSwgaW5jb3JyZWN0X21zZyA9IFwiRGlkIHlvdSBjcmVhdGUgdGhlIGNvbmZ1c2lvbiBtYXRyaXggYnkgY2FsbGluZyBgY29uZnVzaW9uTWF0cml4KClgIG9uIHRoZSBwcmVkaWN0ZWQgX2NsYXNzXyB2YWx1ZXMgYW5kIHRoZSBhY3R1YWwgdmFsdWVzP1wiKVxudGVzdF9lcnJvcigpXG5zdWNjZXNzX21zZyhcIkdyZWF0IHdvcmshXCIpIiwiaGludCI6IlxuLSBgYGlmZWxzZSgpYGAgdGFrZXMgMyBhcmd1bWVudHM6IGEgbG9naWNhbCBjb25kaXRpb24sIGEgdmFsdWUgdG8gdGFrZSB3aGVuIHRoZSBjb25kaXRpb24gaXMgbWV0LCBhbmQgYSB2YWx1ZSBmb3Igd2hlbiBpdCBpcyBub3QgbWV0LlxuLSBUaGUgZmFjdG9yIGxldmVscyBzaG91bGQgYmUgYGBcIk1cImBgIGFuZCBgYFwiUlwiYGAgKGluIHRoYXQgb3JkZXIpLlxuLSBgYGNvbmZ1c2lvbk1hdHJpeCgpYGAgdGFrZXMgYHBfY2xhc3NgIGFuZCBgYHRlc3RbW1wiQ2xhc3NcIl1dYGAgYXMgYXJndW1lbnRzLiJ9

Si todo esto te cuadra, sigue con el siguiente ejercicio. Si no, aquí tienes un vídeo resumen.

Vídeo resumen sobre la matriz de confusión

De probabilidades a matriz de confusión

Imagina que quieres asegurarte al máximo de que tu modelo identifica correctamente todas las minas como minas. En este caso, podrías usar un umbral de predicción de 0,10 en lugar de 0,90.

Puedes construir la matriz de confusión igual que antes, usando tus nuevas clases predichas:

pred <- ifelse(probability > threshold, "M", "R")

Luego puedes llamar a la función confusionMatrix() igual que en el ejercicio anterior:

confusionMatrix(pred, actual)
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbmxpYnJh cnkoY2FyZXQpXG5saWJyYXJ5KG1sYmVuY2gpXG5kYXRhKFwiU29uYXJcIilcblxuZG93bmxvYWQuZmlsZShcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Fzc2V0cy5kYXRhY2FtcC5jb20vcHJvZHVjdGlvbi9jb3Vyc2VfMTE2My9kYXRhc2V0cy9Tb25hcl90cmFpbi5yZHNcIixcbiAgICAgICAgICAgICAgZGVzdGZpbGUgPSBcIlNvbmFyX3RyYWluLnJkc1wiKVxuZG93bmxvYWQuZmlsZShcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Fzc2V0cy5kYXRhY2FtcC5jb20vcHJvZHVjdGlvbi9jb3Vyc2VfMTE2My9kYXRhc2V0cy9Tb25hcl90ZXN0LnJkc1wiLFxuICAgICAgICAgICAgICBkZXN0ZmlsZSA9IFwiU29uYXJfdGVzdC5yZHNcIilcbnRyYWluIDwtIHJlYWRSRFMoXCJTb25hcl90cmFpbi5yZHNcIilcbnRlc3QgPC0gcmVhZFJEUyhcIlNvbmFyX3Rlc3QucmRzXCIpXG5cbmZpeF9jbGFzcyA8LSBmdW5jdGlvbih4KXtcbiAgaWZlbHNlKHggPT0gXCJNXCIsIDEsIDApXG59XG50cmFpbltbXCJDbGFzc1wiXV0gPC0gZml4X2NsYXNzKHRyYWluW1tcIkNsYXNzXCJdXSlcblxuIyBGaXQgZ2xtIG1vZGVsXG5tb2RlbCA8LSBnbG0oQ2xhc3MgfiAuLCBmYW1pbHkgPSBcImJpbm9taWFsXCIsIHRyYWluKVxuXG4jIFByZWRpY3Qgb24gdGVzdFxucCA8LSBwcmVkaWN0KG1vZGVsLCB0ZXN0LCB0eXBlID0gXCJyZXNwb25zZVwiKVxuIiwic2FtcGxlIjoiXG4jIElmIHAgZXhjZWVkcyB0aHJlc2hvbGQgb2YgMC4xLCBNIGVsc2UgUjogbV9vcl9yXG5cblxuIyBDb252ZXJ0IHRvIGZhY3RvcjogcF9jbGFzc1xuXG5cbiMgQ3JlYXRlIGNvbmZ1c2lvbiBtYXRyaXhcbiIsInNvbHV0aW9uIjoiXG4jIElmIHAgZXhjZWVkcyB0aHJlc2hvbGQgb2YgMC4xLCBNIGVsc2UgUjogbV9vcl9yXG5tX29yX3IgPC0gaWZlbHNlKHAgPiAwLjEsIFwiTVwiLCBcIlJcIilcblxuIyBDb252ZXJ0IHRvIGZhY3RvcjogcF9jbGFzc1xucF9jbGFzcyA8LSBmYWN0b3IobV9vcl9yLCBsZXZlbHMgPSBsZXZlbHModGVzdFtbXCJDbGFzc1wiXV0pKVxuXG4jIENyZWF0ZSBjb25mdXNpb24gbWF0cml4XG5jb25mdXNpb25NYXRyaXgocF9jbGFzcywgdGVzdFtbXCJDbGFzc1wiXV0pIiwic2N0IjoiXG50ZXN0X29iamVjdChcInBfY2xhc3NcIiwgdW5kZWZpbmVkX21zZyA9IFwiRG9uJ3QgZm9yZ2V0IHRvIGNyZWF0ZSBgcF9jbGFzc2AsIGEgZmFjdG9yIG9mIGNsYXNzIHByZWRpY3Rpb25zLlwiLCBpbmNvcnJlY3RfbXNnID0gXCJEaWQgeW91IGNyZWF0ZSBgcF9jbGFzc2Agd2l0aCBsZXZlbHMgYCdNJ2AgYW5kIGAnUidgP1wiKVxudGVzdF9mdW5jdGlvbihcImNvbmZ1c2lvbk1hdHJpeFwiLCBhcmdzID0gYyhcImRhdGFcIiwgXCJyZWZlcmVuY2VcIiksIGluY29ycmVjdF9tc2cgPSBcIkRpZCB5b3UgY3JlYXRlIHRoZSBjb25mdXNpb24gbWF0cml4IGJ5IGNhbGxpbmcgYGNvbmZ1c2lvbk1hdHJpeCgpYCBvbiB0aGUgcHJlZGljdGVkIF9jbGFzc18gdmFsdWVzIGFuZCB0aGUgYWN0dWFsIHZhbHVlcz9cIilcbnRlc3RfZXJyb3IoKVxuc3VjY2Vzc19tc2coXCJBd2Vzb21lISBOb3RlIHRoYXQgdGhlcmUgYXJlIChzbGlnaHRseSkgbW9yZSBwcmVkaWN0ZWQgbWluZXMgd2l0aCB0aGlzIGxvd2VyIHRocmVzaG9sZDogNTggKDQwICsgMTgpIGFzIGNvbXBhcmVkIHRvIDQ3IGZvciB0aGUgMC41MCB0aHJlc2hvbGQuXCIpIiwiaGludCI6IlxuLSBgYGlmZWxzZSgpYGAgdGFrZXMgMyBhcmd1bWVudHM6IGEgbG9naWNhbCBjb25kaXRpb24sIGEgdmFsdWUgdG8gdGFrZSB3aGVuIHRoZSBjb25kaXRpb24gaXMgbWV0LCBhbmQgYSB2YWx1ZSBmb3Igd2hlbiBpdCBpcyBub3QgbWV0LlxuLSBUaGUgZmFjdG9yIGxldmVscyBzaG91bGQgYmUgYGBcIk1cImBgIGFuZCBgYFwiUlwiYGAgKGluIHRoYXQgb3JkZXIpLlxuLSBgYGNvbmZ1c2lvbk1hdHJpeCgpYGAgdGFrZXMgYHBfY2xhc3NgIGFuZCBgYHRlc3RbW1wiQ2xhc3NcIl1dYGAgYXMgYXJndW1lbnRzLiJ9


Si quieres aprender más con este curso, aquí tienes el enlace.

Temas
R
Ciencia de datos

Cursos de R

Curso

Machine Learning con caret en R

4 h
60.8K
Este curso enseña los conceptos fundamentales del machine learning, como la creación y evaluación de modelos predictivos.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Tutorial de tablas de contingencia en R

En este tutorial, aprenderás a crear tablas de contingencia y a probar y cuantificar las relaciones visibles en ellas.
Łukasz Deryło's photo

Łukasz Deryło

10 min

multiple linear regression

Tutorial

Regresión lineal múltiple en R: tutorial con ejemplos

Una visión completa para entender las regresiones lineales múltiples en R a través de ejemplos.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Tutorial de regresión lineal en R

En este tutorial aprenderás los fundamentos de un modelo estadístico muy popular: la regresión lineal.

Eladio Montero Porras

15 min

Tutorial

Creación de modelos de redes neuronales (NN) en R

En este tutorial, aprenderá a crear un modelo de Red Neuronal en R.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Tutorial

Tutorial de K-Means Clustering en R

Aprenda qué es k-means y descubra por qué es uno de los algoritmos de agrupación más utilizados en la ciencia de datos.
Eugenia Anello's photo

Eugenia Anello

8 min

Tutorial

Matriz de correlaciones en Excel: Guía completa para crear e interpretar

Aprende el concepto estadístico de correlación, y sigue el cálculo e interpretación de correlaciones para un conjunto de datos de muestra, en un tutorial paso a paso.
Arunn Thevapalan's photo

Arunn Thevapalan

9 min

Ver MásVer Más