def run(argv): parser = ArgumentParser() parser.add_argument('vem_model', type=str, help='SAM VEM model to use features from') parser.add_argument('-c', type=float, default=1.0, help='SVM C parameter') options = parser.parse_args(argv[1:]) log.info('Loading SAM model %s' % options.vem_model) sam_model = VEMModel.load(options.vem_model) log.info('Making dataset') dataset = make_dataset(sam_model) metric = ClassificationError() scores = [] for i in range(20): train_data, test_data = dataset.split(p=0.90, seed=i) topic_svm = TopicSVM(sam_model, C=options.c, normalize=True) topic_svm.train(train_data) predictions = topic_svm.predict(test_data) score = metric(test_data.targets, predictions) log.info(score) scores.append(score) log.info('Mean classification error: %g' % np.mean(scores))
def run(self, options): if os.path.exists(options.model): print 'Loading model snapshot from %s' % options.model model = VEMModel.load(options.model) else: # Initialize a model from scratch print 'Initializing new model' reader = CorpusReader(options.corpus, data_series='sam') model = VEMModel(reader=reader, T=options.T) while model.iteration < options.iterations: print '** Iteration %d **' % model.iteration model.run_one_iteration() if model.iteration % SAVE_MODEL_INTERVAL == 0: print 'Saving model snapshot...' model.save(options.model) if model.iteration % SAVE_TOPICS_INTERVAL == 0: if options.write_topics: print 'Saving topics to %s' % options.write_topics with open(options.write_topics, 'w') as f: model.write_topics(f) if options.write_topic_weights: print 'Saving topic weights to %s' % options.write_topic_weights with open(options.write_topic_weights, 'w') as f: model.write_topic_weights_arff(f) if options.write_topics: print 'Saving topics to %s' % options.write_topics with open(options.write_topics, 'w') as f: model.write_topics(f) if options.write_topic_weights: print 'Saving topic weights to %s' % options.write_topic_weights with open(options.write_topic_weights, 'w') as f: model.write_topic_weights_arff(f) model.save(options.model)