示例#1
0
 def get_classifier(self, classifier_name):
     modelmap = {
         "naive": NaiveBayesClassifier(),
          "svm" : SVMClassifier(),
         'random': RandomForestClf()
         # "grid": GridSearchClassifier()
     }
     if classifier_name in modelmap:
         return modelmap[classifier_name]
     else:
         raise Exception("Unrecognized model: {}".format(classifier_name))
示例#2
0
from classifiers.naive_bayes_classifier import NaiveBayesClassifier
from classifiers.svm_classifier import SVMClassifier
import argparse

datasets = {
    'ag_news': AgNews(),
    'yahoo_answers': YahooAnswers(),
    'yelp_review_polarity': YelpReviewPolarity(),
}

classifiers = {
    'cnn': CNNClassifier(),
    'lstm': LSTMClassifier(),
    'character_level_cnn': CharacterLevelCNNClassifier(),
    'naive_bayes': NaiveBayesClassifier(),
    'svm': SVMClassifier()
}


def main(classifier_str, dataset_str):
    dataset = datasets[dataset_str]
    classifier = classifiers[classifier_str]
    classifier.load(dataset)
    classifier.fit()
    classifier.evaluate()

    # TODO grid search


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
示例#3
0
def main():
    if sys.argv[1] == 'logistic_regression':
        if sys.argv[2] in ['accuracy', 'confusion_matrix']:
            kfold = 5
            model = LogisticRegressionClassifier(approch=sys.argv[3])
            model.train()
            model.evaluate(label="Training", metrics=sys.argv[2])
            model.evaluate(label="Testing", metrics=sys.argv[2])
            hyperparameters = {
                'penalty': ['l1', 'l2'],
                'C': np.logspace(0, 4, 10)
            }
            model.setting_model(hyperparameters, kfold, sys.argv[2])

    elif sys.argv[1] == 'random_forest':
        if sys.argv[2] in ['accuracy', 'confusion_matrix']:
            kfold = 5
            model = RandomForestAlgorithmClassifier(approch=sys.argv[3])
            model.train()
            model.evaluate(label="Training", metrics=sys.argv[2])
            model.evaluate(label="Testing", metrics=sys.argv[2])
            hyperparameters = {
                'max_depth': np.linspace(10, 100, num=10),  # best=50
                'n_estimators': range(88, 91)
            }
            model.setting_model(hyperparameters, kfold, sys.argv[2])
    elif sys.argv[1] == 'svm':
        if sys.argv[2] in ['accuracy', 'confusion_matrix']:
            kfold = 5
            model = SVMClassifier(approch=sys.argv[3])
            model.train()
            model.evaluate(label="Training", metrics=sys.argv[2])
            model.evaluate(label="Testing", metrics=sys.argv[2])
            hyperparameters = {
                'C': [0.1, 1, 10, 100, 1000],
                'gamma': [1, 0.1, 0.01, 0.001, 0.0001],
                'kernel': ['rbf', 'sigmoid']
            }
            model.setting_model(hyperparameters, kfold, sys.argv[2])
    elif sys.argv[1] == 'adaboost':
        if sys.argv[2] in ['accuracy', 'confusion_matrix']:
            kfold = 5
            model = AdaBoostAlgorithmClassifier(approch=sys.argv[3])
            model.train()
            model.evaluate(label="Training", metrics=sys.argv[2])
            model.evaluate(label="Testing", metrics=sys.argv[2])
            hyperparameters = {
                'base_estimator': [
                    tree.DecisionTreeClassifier(max_depth=n)
                    for n in range(13, 14)
                ],
                'n_estimators': [50, 55, 60, 65, 70, 80, 85],
                'algorithm': ['SAMME.R', 'SAMME'],
                'learning_rate':
                np.geomspace(0.01, 1, num=3)
            }
            model.setting_model(hyperparameters, kfold, sys.argv[2])
    elif sys.argv[1] == 'neural_network':
        if sys.argv[2] in ['accuracy', 'confusion_matrix']:
            kfold = 5
            model = NeuralnetworkClassifier(approch=sys.argv[3])
            model.train()
            model.evaluate(label="Training", metrics=sys.argv[2])
            model.evaluate(label="Testing", metrics=sys.argv[2])
            hyperparameters = {
                'hidden_layer_sizes': [(5, ), (5, 5)],
                'activation': ['relu'],
                'solver': ['identity', 'relu', 'tanh'],
                'alpha': [1e-5, 3e-4],
                'learning_rate_init': [1e-2, 1e-3]
            }
            model.setting_model(hyperparameters, kfold, sys.argv[2])
    elif sys.argv[1] == 'linear_discriminant':
        if sys.argv[2] in ['accuracy', 'confusion_matrix']:
            kfold = 5
            model = LinearDiscriminantClassifier(approch=sys.argv[3])
            model.train()
            model.evaluate(label="Training", metrics=sys.argv[2])
            model.evaluate(label="Testing", metrics=sys.argv[2])
            hyperparameters = {
                'penalty': ['l1', 'l2'],
                'multi_class': ['auto'],
                'solver': ['liblinear', 'identity', 'relu', 'tanh'],
                'max_iter': [10000]
            }
            model.setting_model(hyperparameters, kfold, sys.argv[2])