Skip to content

Commit

Permalink
svm cross validation
Browse files Browse the repository at this point in the history
  • Loading branch information
AlonDaks committed Dec 13, 2015
1 parent 24e5d9f commit 1a6e108
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 3 deletions.
2 changes: 1 addition & 1 deletion code/stat159lambda/classification/random_forest/rf.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def __init__(self,
y,
max_features='auto',
depth=None,
n_estimators=400):
n_estimators=300):
self.model = RandomForestClassifier(max_features=max_features,
n_estimators=n_estimators,
max_depth=None,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from stat159lambda.classification import design_matrix as dm
from stat159lambda.classification.random_forest import rf
from stat159lambda.classification import partition_volumes as pv
from stat159lambda.config import REPO_HOME_PATH
from stat159lambda.config import REPO_HOME_PATH, NUM_VOXELS
from stat159lambda.linear_modeling import linear_modeling as lm
from stat159lambda.utils import data_path as dp

Expand Down
2 changes: 1 addition & 1 deletion code/stat159lambda/classification/svm/svm.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class Classifier:
-------
None
"""
def __init__(self, X, y, C=1.0, kernel='rbf', degree=2):
def __init__(self, X, y, C=.001, kernel='linear', degree=2):
if kernel == 'linear':
self.model = LinearSVC(C=C)
else:
Expand Down
35 changes: 35 additions & 0 deletions code/stat159lambda/classification/svm/svm_cross_validate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from __future__ import print_function, division
import numpy as np
from sklearn.cross_validation import KFold
from sklearn.metrics import accuracy_score
from stat159lambda.classification import design_matrix as dm
from stat159lambda.classification.svm import svm
from stat159lambda.classification import partition_volumes as pv
from stat159lambda.config import REPO_HOME_PATH, NUM_VOXELS
from stat159lambda.linear_modeling import linear_modeling as lm
from stat159lambda.utils import data_path as dp


voxels_sorted_by_t_statistic = lm.VoxelExtractor(1, 'int-ext').t_stat()
# num_features_values = range(100, NUM_VOXELS/100, 100)
# for num_features in num_features_values:
voxel_feature_indices = voxels_sorted_by_t_statistic[:1000]
design_matrix = dm.DesignMatrix(dp.get_smoothed_2d_path(1, 4),
pv.get_train_indices(), voxel_feature_indices)

X_train = design_matrix.get_design_matrix()
y_train = np.array(design_matrix.get_labels())

cv_accuracies = []
for train, test in KFold(len(X_train), 5):
X_cv_train = X_train[train, :]
y_cv_train = y_train[train]
X_cv_test = X_train[test, :]
y_cv_test = y_train[test]
model = svm.Classifier(X_cv_train, y_cv_train)
model.train()
y_predicted = model.predict(X_cv_test)
cv_accuracies.append(accuracy_score(y_predicted, y_cv_test))

print(np.mean(cv_accuracies))

0 comments on commit 1a6e108

Please sign in to comment.