def testBinds(self): ds = normalFeatureDataset() ds_data = ds.samples.copy() ds_chunks = ds.chunks.copy() self.failUnless(N.all(ds.samples == ds_data)) # sanity check funcs = ['zscore', 'coarsenChunks'] if externals.exists('scipy'): funcs.append('detrend') for f in funcs: eval('ds.%s()' % f) self.failUnless(N.any(ds.samples != ds_data) or N.any(ds.chunks != ds_chunks), msg="We should have modified original dataset with %s" % f) ds.samples = ds_data.copy() ds.chunks = ds_chunks.copy() # and some which should just return results for f in ['aggregateFeatures', 'removeInvariantFeatures', 'getSamplesPerChunkLabel']: res = eval('ds.%s()' % f) self.failUnless(res is not None, msg='We should have got result from function %s' % f) self.failUnless(N.all(ds.samples == ds_data), msg="Function %s should have not modified original dataset" % f)
def testTScoredAnalyzer(self, svm): self.dataset = normalFeatureDataset(perlabel=100, nlabels=2, nchunks=20, nonbogus_features=[0,1], nfeatures=4, snr=10) svm_weigths = svm.getSensitivityAnalyzer() sana = TScoredFeaturewiseMeasure( svm_weigths, NFoldSplitter(cvtype=1), enable_states=['maps']) t = sana(self.dataset) # correct size? self.failUnlessEqual(t.shape, (4,)) # check reasonable sensitivities t = Absolute(t) self.failUnless(N.mean(t[:2]) > N.mean(t[2:])) # check whether SplitSensitivityAnalyzer 'maps' state is accessible self.failUnless(sana.states.isKnown('maps')) self.failUnless(N.array(sana.maps).shape == (20,4))
def testLARSSensitivities(self): data = normalFeatureDataset(perlabel=10, nlabels=2, nfeatures=4) # use LARS on binary problem clf = LARS() clf.train(data) # now ask for the sensitivities WITHOUT having to pass the dataset # again sens = clf.getSensitivityAnalyzer(force_training=False)() self.failUnless(sens.shape == (data.nfeatures,))
def testSMLRSensitivities(self): data = normalFeatureDataset(perlabel=10, nlabels=2, nfeatures=4) # use SMLR on binary problem, but not fitting all weights clf = SMLR(fit_all_weights=False) clf.train(data) # now ask for the sensitivities WITHOUT having to pass the dataset # again sens = clf.getSensitivityAnalyzer(force_training=False)() self.failUnless(sens.shape == (data.nfeatures,))