Skip to content

Commit

Permalink
custom classifier fix
Browse files Browse the repository at this point in the history
  • Loading branch information
adelavega committed Jun 26, 2013
1 parent dce92dd commit acc2be2
Showing 1 changed file with 26 additions and 75 deletions.
101 changes: 26 additions & 75 deletions neurosynth/analysis/classify.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,17 @@
from functools import reduce


def classify_by_features(
dataset,
features,
studies=None,
method='SVM',
scikit_classifier=None,
):
def classify_by_features(dataset, features, studies=None, method='SVM',
scikit_classifier=None):

pass


def classify_regions(
dataset,
masks,
method='ERF',
threshold=0.08,
remove_overlap=True,
regularization='scale',
output='summary',
studies=None,
features=None,
class_weight='auto',
classifier=None,
cross_val='4-Fold',
param_grid=None,
):
def classify_regions(dataset, masks, method='ERF', threshold=0.08,
remove_overlap=True, regularization='scale',
output='summary', studies=None, features=None,
class_weight='auto', classifier=None,
cross_val='4-Fold', param_grid=None):
'''
Args:
...
Expand Down Expand Up @@ -78,30 +64,14 @@ def classify_regions(

X = dataset.get_feature_data(ids=flat_ids, features=features)

return classify(
X,
y,
method,
classifier,
output,
cross_val,
class_weight,
regularization=regularization,
param_grid=param_grid,
)


def classify(
X,
y,
method='SVM',
classifier=None,
output='summary',
cross_val=None,
class_weight=None,
regularization=None,
param_grid=None,
):
return classify(X, y, method, classifier, output, cross_val,
class_weight, regularization=regularization,
param_grid=param_grid)


def classify(X, y, method='SVM', classifier=None, output='summary',
cross_val=None, class_weight=None, regularization=None,
param_grid=None):

# Build classifier

Expand Down Expand Up @@ -135,33 +105,24 @@ def classify(

class Classifier:

def __init__(
self,
clf_method='ERF',
classifier=None,
class_weight=None,
param_grid=None,
):
def __init__(self, clf_method='ERF', classifier=None,
class_weight=None, param_grid=None):
""" Initialize a new classifier instance """

# Set classifier

if classifier:
if classifier is not None:
self.clf = classifier
else:
if clf_method == 'SVM':
from sklearn import svm
self.clf = svm.SVC(class_weight=class_weight)
elif clf_method == 'ERF':
from sklearn.ensemble import ExtraTreesClassifier
self.clf = ExtraTreesClassifier(
n_estimators=10,
max_depth=None,
min_samples_split=1,
random_state=0,
n_jobs=-1,
compute_importances=True,
)
self.clf = ExtraTreesClassifier(n_estimators=10,
max_depth=None, min_samples_split=1,
random_state=0, n_jobs=-1,
compute_importances=True)
elif clf_method == 'Dummy':
from sklearn.dummy import DummyClassifier
self.clf = DummyClassifier(strategy='stratified')
Expand All @@ -187,12 +148,7 @@ def fit(self, X, y):

return self.clf

def cross_val_fit(
self,
X,
y,
cross_val='4-Fold',
):
def cross_val_fit(self, X, y, cross_val='4-Fold'):
""" Fits X to outcomes y, using clf and cv_method """

from sklearn import cross_validation
Expand Down Expand Up @@ -227,13 +183,8 @@ def cross_val_fit(

return self.cvs.mean()

def fit_dataset(
self,
dataset,
y,
features=None,
feature_type='features',
):
def fit_dataset(self, dataset, y, features=None,
feature_type='features'):
""" Given a dataset, fits either features or voxels to y """

# Get data from dataset
Expand Down

0 comments on commit acc2be2

Please sign in to comment.