Saltar al contenido principal
LibreTexts Español

5.1: División de datos para entrenamiento y pruebas

  • Page ID
    149869
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    En el Capítulo 4 utilizamos todos los datos disponibles en el marco de datos int00.dat para seleccionar los predictores apropiados para incluir en el modelo de regresión final. Debido a que calculamos el modelo para que se ajuste a este conjunto de datos en particular, ahora no podemos usar este mismo conjunto de datos para probar las capacidades predictivas del modelo. Eso sería como copiar las respuestas del examen de la clave de respuestas y luego usar esa misma clave de respuestas para calificar tu examen. Por supuesto que obtendrías un resultado perfecto. En cambio, debemos usar un conjunto de datos para entrenar el modelo y otro conjunto de datos para probarlo.

    La dificultad con este proceso de prueba de tren es que necesitamos conjuntos de datos separados pero similares. Una forma estándar de encontrar estos dos conjuntos de datos diferentes es dividir los datos disponibles en dos partes. Tomamos una porción aleatoria de todos los datos disponibles y lo llamamos nuestro conjunto de entrenamiento. Luego usamos esta porción de los datos en la función lm () para calcular los valores específicos de los coeficientes del modelo. Usamos la porción restante de los datos como nuestro conjunto de pruebas para ver qué tan bien el modelo predice los resultados, en comparación con estos datos de prueba.

    La siguiente secuencia de operaciones divide el conjunto de datos int00.dat en los conjuntos de entrenamiento y prueba:

    rows <nrow(int00.dat)
    f <0.5
    upper_bound <floor(f * rows)
    permuted_int00.dat <int00.dat[sample(rows), ] 
    train.dat <permuted_int00.dat[1:upper_bound, ] 
    test.dat <permuted_int00.dat[(upper_bound+1):rows, ]

    La primera línea asigna el número total de filas en el marco de datos int00.dat a las filas variables. La siguiente línea asigna a la variable f la fracción de todo el conjunto de datos que deseamos utilizar para el conjunto de entrenamiento. En este caso, decidimos algo arbitrariamente usar la mitad de los datos como conjunto de entrenamiento y la otra mitad como conjunto de prueba. La función floor () redondea su valor de argumento al entero más cercano. Entonces la línea upper_bound <floor (f * rows) asigna el número de índice de la fila central a la variable upper_bound.

    La interesante acción ocurre en la siguiente línea. La función sample () devuelve una permutación de los enteros entre 1 y n cuando le damos el valor entero n como su argumento de entrada. En este código, la expresión sample (rows) devuelve un vector que es una permutación de los enteros entre 1 y rows, donde rows es el número total de filas en el marco de datos int00.dat. El uso de este vector como índice de fila para este marco de datos da una permutación aleatoria de todas las filas en el marco de datos, que asignamos al nuevo marco de datos, permuted_int00.dat. Las dos líneas siguientes asignan la porción inferior de este nuevo marco de datos al conjunto de datos de entrenamiento y la porción superior al conjunto de datos de prueba, respectivamente. Este proceso de aleatorización asegura que obtengamos una nueva selección aleatoria de las filas en los conjuntos de datos de entrenamiento y prueba cada vez que ejecutamos esta secuencia de operaciones.


    This page titled 5.1: División de datos para entrenamiento y pruebas is shared under a CC BY-NC 4.0 license and was authored, remixed, and/or curated by David Lilja (University of Minnesota Libraries Publishing) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.