from autogoal.contrib.keras import KerasSequenceClassifier from autogoal.contrib.torch import BertTokenizeEmbedding from autogoal.datasets import haha from autogoal.kb import CategoricalVector, List, Sentence, Tuple from autogoal.ml import AutoML from autogoal.search import ConsoleLogger, ProgressLogger classifier = AutoML( input=List(Sentence()), output=CategoricalVector(), registry=[KerasSequenceClassifier, BertTokenizeEmbedding], # search_kwargs=dict(memory_limit=4 * 1024 ** 3, evaluation_timeout=60), search_kwargs=dict(memory_limit=0, evaluation_timeout=0), ) Xtrain, Xtest, ytrain, ytest = haha.load(max_examples=10) # embedding = BertEmbedding() # tokens = embedding.run(Xtrain) # classifier = KerasSequenceClassifier().sample() # classifier.run((tokens, ytrain)) classifier.fit(Xtrain, ytrain, logger=[ConsoleLogger(), ProgressLogger()])
with open("haha.log", "a") as fp: fp.write(f"solution={repr(new_best)}\nfitness={new_fn}\n\n") # Basic logging configuration. logger = MemoryLogger() loggers = [ProgressLogger(), ConsoleLogger(), logger] if args.token: from autogoal.contrib.telegram import TelegramLogger telegram = TelegramLogger( token=args.token, name=f"HAHA", channel=args.channel, ) loggers.append(telegram) # Finally, loading the HAHA dataset, running the `AutoML` instance, # and printing the results. X_train, y_train, X_test, y_test = haha.load(max_examples=args.examples) classifier.fit(X_train, y_train, logger=loggers) score = classifier.score(X_test, y_test) print(score) print(logger.generation_best_fn) print(logger.generation_mean_fn)
# Ya sabemos como se utiliza la clase AutoML de la forma más básica # pero esta clase cuenta con varios parámetros que nos permiten # personalizar la ejecución a nuestras condiciones. from autogoal.ml import AutoML # Utilizando el corpus de HAHA from autogoal.datasets import haha # Cargando los datos X_train, y_train, X_test, y_test = haha.load() # Cargando los tipos de datos para representar el dataset from autogoal.kb import Seq, Sentence, VectorCategorical, Supervised # Vemos ahora que párametros nuevos podemos definirle a la clase AutoML automl = AutoML( input=(Seq[Sentence], Supervised[VectorCategorical]), # **tipos de entrada** output=VectorCategorical, # **tipo de salida** # el score_metric define la función objetivo a optimizar y puede ser definida por nosotros en un método propio score_metric=balanced_accuracy_score, # el parámetro registry nos permite seleccionar un conjunto específico de algoritmo a utilizar en nuestra implementación. # Si no se define o se pone None se utilizan todos los algorismos disponibles en AutoGOAL. registry=None, # search_algorithm permite cambiar el algoritmo de optimization que utiliza AutoGOAL, en estos moemntos también está # implementada una búsqueda aleatoria o puedes implementar una nueva clase. search_algorithm=PESearch, # search_iterations se utiliza para definir la cantidad de iteraciones que queremos que haga nuestro algoritmo de búsqueda # osea cantidad de generaciones en la búsqued aevolutiva o en el random search_iterations=args.iterations, # search_kwargs este parámetro se utiliza para pasar opciones adicionales al algoritmo de búsqueda