Duda Tarea 2 - 2.1

Duda Tarea 2 - 2.1

de Maria Sofia Zeballos Goron -
Número de respuestas: 2

Buenas tardes, 

Respecto al punto 2.1: pide entrenar un modelo MNB y predecir sobre el conjunto de test. Por lo que entiendo del código que está en el notebook, se entrena con el X_train e y_train, para luego predecir sobre X_train. Esto es para ver el accuracy con los datos que se entrenó? 

Ahora, al predecir sobre el conjunto de test, entiendo que se debe utilizar el modelo ya entrenado con X_train. Es así? Porque al hacerlo tengo un problema de dimensiones:

print(X_train_tf.shape)
(438, 2821) 
print(X_test_tf.shape)
(188, 1660)

Y supongo que esto es porque al hacer el split antes de hacer tfid, las palabras de los párrafos son diferentes. Sospecho que hay algo que se me está pasando... 

Saludos, 
Sofía


En respuesta a Maria Sofia Zeballos Goron

Re: Duda Tarea 2 - 2.1

de Braulio Rios Ferreira -

Buenas,

Es correcto lo que decís sobre los conjuntos de train y test. Las métricas sobre el conjunto de train pueden ser útiles para checkear que el entrenamiento funcionó, pero lo importante es reportar las métricas sobre el conjunto de test. El código sobre train se da como ejemplo simplemente.

También es correcto que la lista de palabras en train/test difiere. Es por eso que que el `fit` o `fit_transform` de los encoders sólo se debe correr sobre el conjunto de train. Luego se corre sólamente `encoder.transform` en test para convertir el texto a features, pero utilizando el encoder ajustado ("fitteado") a train. Si hubiera palabras nuevas en test (cosa habitual) se van a ignorar.

Está buena la pregunta porque esto es muy importante en general, cuando se usa un encoder que necesita ser ajustado: no cambiarlo luego de entrenar el modelo (nunca usar `fit` o `fit_transform` aquí). Por suerte en este caso el error salta a la vista porque las dimensiones quedan distintas, si no sería un típico "bug silencioso" que puede hacer que las predicciones del modelo sean básicamente aleatorias.