def prueba5(): print( 'Prueba 5: División del dataset en conjunto de entrenamiento y pruebas' ) try: print('\n--- Lectura del dataset preprocesado') df = pd.read_csv('../dataset/ticnn_preprocessed.csv') except: print('Se ha producido un error al leer el dataset') raise print('Dataset leído correctamente, mostrando las tres primeras entradas') print(df.head(3)) try: print('\n--- División de los datos en entrenamiento y pruebas') print('70% entrenamiento - 30% pruebas') texts = list(df['text']) targets = list(df['type']) x_train, y_train, x_test, y_test = model_creation.train_test_split( texts, targets) print('Datos separados correctamente') except: print('Error al separar en entrenamiento y pruebas') raise try: print('\n--- Comprobamos que el tamaño de los conjuntos es correcto') assert len(x_train) == int(len(df) * 0.7) assert len(x_train) == len(y_train) print('El tamaño del conjunto de entrenamiento es el correcto') assert len(x_test) == int(math.ceil(len(df) * 0.3)) assert len(x_test) == len(y_test) print('El tamaño del conjunto de pruebas es el correcto') except: print('El tamaño de los conjuntos no es el adecuado') raise print( '\n-------------------------------------------------------------------' ) print( 'División en conjunto de entrenamiento y pruebas realizada correctamente' ) print( '\n-------------------- Prueba 5 finalizada con éxito --------------------\n' )
def prueba11(): print('Prueba 11: Grid Search con un subset de los hiperparámetros') try: print('\n--- Lectura del dataset preprocesado') df = pd.read_csv('../dataset/ticnn_preprocessed.csv') except: print('Se ha producido un error al leer el dataset') raise print('Dataset Leído correctamente') try: print('\n--- División de los datos en entrenamiento y pruebas') # Alteración del orden df = df.sample(frac=1.) # Transformamos la columna text a lista de string from ast import literal_eval df['text'] = df['text'].apply(literal_eval) # Aplicamos la función convert_to_string a los textos df['text'] = df['text'].apply(model_creation.convert_to_string) # Convertimos los textos y las targets variables a listas texts = list(df['text']) targets = list(df['type']) # División en conjunto de entrenamiento y test x_train, y_train, x_test, y_test = model_creation.train_test_split( texts, targets) except: print('Error al separar en entrenamiento y pruebas') raise print('Datos separados correctamente') try: print('\n--- Creación del diccionario (Vocabulario)') tokenizer = tf_tokenizer(num_words=20000, oov_token='<null_token>', lower=False, char_level=False) tokenizer.fit_on_texts(x_train) except: print('Error al crear el vocabulario') raise print('Vocabulario creado correctamente') try: print('\n--- Transformar los textos en secuencias y padding') x_train_sequence = tokenizer.texts_to_sequences(x_train) x_test_sequence = tokenizer.texts_to_sequences(x_test) train_padded = pad_sequences(x_train_sequence, maxlen=600, dtype='int32', truncating='post', padding='post') test_padded = pad_sequences(x_test_sequence, maxlen=600, dtype='int32', truncating='post', padding='post') except: print('Error al convertir los textos en secuencias') raise print('Secuenciación y padding realizados con éxito') try: print('\n--- Definición de los hiperparámetros a optimizar') HP_DROPOUT = hp.HParam('dropout', hp.RealInterval(0.2, 0.4)) METRIC_F1 = 'f1-score' with tf.summary.create_file_writer( 'logs/hparam_tuning(test11)').as_default(): hp.hparams_config( hparams=[HP_DROPOUT], metrics=[hp.Metric(METRIC_F1, display_name='F1-Score')]) except: print('Error al definir los hiperparámetros') raise print('Hiperparámetros definidos correctamente') try: print('\n--- Ejecución Grid Search') session_num = 0 for dropout_rate in (HP_DROPOUT.domain.min_value, HP_DROPOUT.domain.max_value): hparams = {HP_DROPOUT: dropout_rate} run_name = 'run-%d' % session_num print('--Iniciando ejecución : %s' % run_name) print({h: hparams[h] for h in hparams}) hparams_optimization.run('logs/hparam_tuning(test11)/' + run_name, hparams, train_padded, test_padded, y_train, y_test) session_num += 1 except: print('Error al realizar Grid Search') raise print( '\n-------------------------------------------------------------------' ) print('Grid Search realizado con éxito')
print('La variante seleccionada es Distributed Memory') if dm_value == 1 else print('La variante seleccionada es Distributed Bag of Words') ] # Alteracion aleatoria del orden de las entradas df = df.sample(frac=1) # Convertimos la columna text a lista de strings df['text'] = df['text'].apply(literal_eval) # Convertimos las variables a listas texts = list(df['text']) targets = list(df['type']) # Dividimos en conjunto de entrenamiento y pruebas x_train, y_train, x_test, y_test = model_creation.train_test_split( texts, targets) # Generamos los TaggedDocuments train_documents = [] test_documents = [] for i in range(len(x_train)): train_documents.append(TaggedDocument(words=x_train[i], tags=[y_train[i]])) for i in range(len(x_test)): test_documents.append(TaggedDocument(words=x_test[i], tags=[y_test[i]])) # Creamos el modelo Doc2Vec print('Creando el modelo Doc2Vec') d2v_model = Doc2Vec(dm=dm_value, vector_size=n_dimensions,