def generate_model(data, classes, args):
# Define the parameters
tuned_parameters = {'C': C_RANGE,
'class_weight': CLASS_WEIGHTS}
# Define the classifier
if args.kernel == 'rbf':
clf = svm.SVC(cache_size=CACHE_SIZE)
tuned_parameters['gamma'] = GAMMA_RANGE
else:
clf = svm.LinearSVC(dual=False)
print_verbose("Classifier: %s" % str(clf), 5)
print_verbose("Parameters: %s" % str(tuned_parameters), 5)
# Generate the K-fold development
skf = cross_validation.StratifiedKFold(classes, n_folds=K_FOLD, shuffle=True)
print_verbose("KFold: %s" % str(skf), 5)
# Generate the grid search
if args.search == 'grid':
gscv = grid_search.GridSearchCV(clf, tuned_parameters, cv=skf, scoring='f1',
n_jobs=1, verbose=get_verbose_level())
else:
gscv = grid_search.RandomizedSearchCV(clf, tuned_parameters, cv=skf, scoring='f1',
n_jobs=1, verbose=get_verbose_level(), n_iter=args.iter)
# Search
print_verbose("GridSearch: %s" % str(gscv), 5)
gscv.fit(data, classes)
# Print scores
print_verbose("GridSearch scores:", 5)
for params, mean_score, scores in gscv.grid_scores_:
print_verbose("%0.6f (+/-%0.06f) for %r"
% (mean_score, scores.std() / 2, params), 5)
# Print best score
print_verbose("GridSearch best score:", 0)
print_verbose("%0.6f for %r" % (gscv.best_score_, gscv.best_params_), 0)
return gscv
评论列表
文章目录