elif args.clasificador == "SGD": clasificador_usado = linear_model.SGDClassifier(shuffle=True) else: # "SVM" clasificador_usado = svm.SVC() parameters_grid_search = parameters_svm if args.grid_search: grid_search = GridSearchCV(clasificador_usado, parameters_grid_search, cv=5, verbose=2, n_jobs=8) grid_search.fit(features, clases) print("Mejores parámetros encontrados para " + args.clasificador + ":") for nombre_parametro, valor_parametro in clasificador_usado.get_params().items(): print("\t{clave}: {valor}".format(clave=nombre_parametro, valor=valor_parametro)) print('') print("Acierto: {acierto}".format(acierto=grid_search.best_score_)) grid_search.best_estimator_ = grid_search.best_estimator_.fit(features, clases) clasificador_usado = grid_search.best_estimator_ print('') if args.parametros_clasificador: print('') print("Parametros del clasificador:") for nombre_parametro, valor_parametro in clasificador_usado.get_params().items(): print("\t{clave}: {valor}".format(clave=nombre_parametro, valor=valor_parametro)) print('') if args.cross_validation and not args.evaluar: cross_validation_y_reportar(clasificador_usado, features, clases, 5) print("Entrenando clasificador...") if args.ponderar_segun_votos:
le = LabelEncoder() lb = LabelBinarizer() loader = NiftiMasker(mask='/tmp/mask.nii.gz', memory=memory, memory_level=1) reporter = Reporter(report_dir='/tmp/reporter') cv = ShuffleSplit(len(target), n_iter=5) Cs = [1e-3, 1e-2, 1e-1, 1., 10, 1e2, 1e3] scaler = StandardScaler() n_x, n_y, n_z = mask.shape connectivity = grid_to_graph(n_x, n_y, n_z, mask=mask_array) ward = WardAgglomeration(n_clusters=2000, connectivity=connectivity, memory=memory) svc = LinearSVC(penalty='l1', dual=False) # rand_svc = RandomizedWardClassifier(mask_array, n_iter=16, # memory=memory, n_jobs=-1) pipe = Pipeline([('scaler', scaler), ('clf', svc)]) grid = GridSearchCV(pipe, param_grid={'clf__C': Cs}, cv=cv, n_jobs=1) grid.best_estimator_ = grid.estimator ovr = OneVsRestClassifier(grid, n_jobs=1) # decoder = Decoder(ovr, loader, lb, reporter) # decoder.fit(niimgs, target).score(niimgs, target) # pipeline = Pipeline([('scaler', scaler), ('clf', clf)]) decoder = Decoder(ovr, loader, lb, reporter) decoder.fit(niimgs, target).score(niimgs, target)
grid_search = GridSearchCV(clasificador_usado, parameters_grid_search, cv=5, verbose=2, n_jobs=8) grid_search.fit(features, clases) print("Mejores parámetros encontrados para " + args.clasificador + ":") for nombre_parametro, valor_parametro in clasificador_usado.get_params( ).items(): print("\t{clave}: {valor}".format(clave=nombre_parametro, valor=valor_parametro)) print('') print("Acierto: {acierto}".format(acierto=grid_search.best_score_)) grid_search.best_estimator_ = grid_search.best_estimator_.fit( features, clases) clasificador_usado = grid_search.best_estimator_ print('') if args.parametros_clasificador: print('') print("Parametros del clasificador:") for nombre_parametro, valor_parametro in clasificador_usado.get_params( ).items(): print("\t{clave}: {valor}".format(clave=nombre_parametro, valor=valor_parametro)) print('') if args.cross_validation and not args.evaluar: cross_validation_y_reportar(clasificador_usado, features, clases, 5)