In [1]:
import sklearn
sklearn.__version__


Out[1]:
'0.15.2'

In [2]:
import cPickle as pickle
import hickle as hkl
import os

In [3]:
import sys
sys.path.append('..')
import seizure.tasks
seizure.tasks.task_predict = True

from seizure.tasks import load_mat_data, count_mat_data

In [4]:
skip = 20

In [5]:
data_dir='../filtered-seizure-data'
out_dir ='../data-cache'

In [6]:
for target in ['Dog_1', 'Dog_2', 'Dog_3', 'Dog_4', 'Dog_5', 'Patient_1', 'Patient_2']:
    print target
    # input size
    data_types = ['preictal', 'interictal']
    Ns = 0
    for data_type in data_types:
        for i in count_mat_data(data_dir, target, data_type):
            Ns += 1
    print 'Number of segments', Ns
    
    # sample input
    Nf = None
    i = 0
    scount = 0
    for data_type in data_types:
        mat_data = load_mat_data(data_dir, target, data_type)
        for segment in mat_data:
            for key in segment.keys():
                if not key.startswith('_'):
                    break
            data = segment[key]['data'][0,0]
            if Nf is None:
                Nf, N0 = data[:,::skip].shape
                N = Ns*N0
                print 'Number of channels', Nf, N
                X = np.empty((N, Nf))
            X[i:i+N0,:] = data[:,::skip].T
            i += N0
            
    # build model from sampled data
    import sklearn.decomposition
    #m = sklearn.decomposition.FastICA()
    m = sklearn.decomposition.PCA(whiten=True)
    # m = sklearn.decomposition.RandomizedPCA()
    m.fit(X)
    fname = os.path.join(out_dir,'141022-PCA-model.%s.pkl'%target)
    with open(fname, 'wb') as fp:
        pickle.dump(m, fp, -1)
    !ls -l {fname}


Dog_1
Number of segments 504
Number of channels 16 6042456
-rw-r--r--  1 udi  staff  2869 Oct 22 06:03 ../data-cache/141022-PCA-model.Dog_1.pkl
Dog_2
Number of segments 542
Number of channels 16 6498038
-rw-r--r--  1 udi  staff  2869 Oct 22 06:05 ../data-cache/141022-PCA-model.Dog_2.pkl
Dog_3
Number of segments 1512
Number of channels 16 18127368
-rw-r--r--  1 udi  staff  2869 Oct 22 06:09 ../data-cache/141022-PCA-model.Dog_3.pkl
Dog_4
Number of segments 901
Number of channels 16 10802089
-rw-r--r--  1 udi  staff  2869 Oct 22 06:12 ../data-cache/141022-PCA-model.Dog_4.pkl
Dog_5
Number of segments 480
Number of channels 15 5754720
-rw-r--r--  1 udi  staff  2597 Oct 22 06:13 ../data-cache/141022-PCA-model.Dog_5.pkl
Patient_1
Number of segments 68
Number of channels 15 815252
-rw-r--r--  1 udi  staff  2597 Oct 22 06:13 ../data-cache/141022-PCA-model.Patient_1.pkl
Patient_2
Number of segments 60
Number of channels 24 719340
-rw-r--r--  1 udi  staff  5621 Oct 22 06:14 ../data-cache/141022-PCA-model.Patient_2.pkl

In [6]: