コード例 #1
0
 def testGenerateMultidimAccuracy(self):
     '''Test the accuracy of generation of features with multidim generators'''
     data = np.array([[[1,2,3],[1,2,3],[1,2,3]]])
     gs = [[gens.minimum], [gens.maximum], [gens.mean]]
     fg = FeatureGenerator(data, gs)
     fg.generate()
     expected_genfeat = np.array([[1,3,2]])
     assert np.shape(fg.generated_features) == np.shape(expected_genfeat), 'Generate features produced an incorrect number of features'
     assert (fg.generated_features == expected_genfeat).all(), 'Generated features are not correct'
コード例 #2
0
 def testGenerateMultidimAccuracyDiff2ndDim(self):
     '''Test the accuracy of generation of features with multidim generators with oddly shaped generator dimensions'''
     data = np.array([[[5,4,5],[1,2,3],[0,-1,-2]]])
     gs = [[gens.minimum], [gens.maximum, gens.mean, gens.minimum], [gens.mean]]
     fg = FeatureGenerator(data, gs)
     fg.generate()
     expected_genfeat = np.array([[4,3,2,1,-1]])
     assert np.shape(fg.generated_features) == np.shape(expected_genfeat), 'Generate features produced an incorrect number of features'
     assert (fg.generated_features == expected_genfeat).all(), 'Generated features are not correct'
コード例 #3
0
 def testSelect(self):
     '''Test the selection of generated features'''
     data = np.random.rand(200,3,10)
     fg = FeatureGenerator(data)
     fg.generators = [gens.identity]
     fg.generate()
     selret = fg.select()
     assert len(fg.selected_weights) > 0, 'Bad selected weights output'
     assert len(fg.selected_fracs) > 0, 'Bad selected fracs output'
     assert (selret == fg.selected_fracs).all(), 'Select() did not return selected fracs appropriately'
     assert len(fg.selected_fracs) == fg.selected_weights.shape[0], \
                     'Selected fracs and weights do not have equal first dimension'
コード例 #4
0
 def testMultiDimGeneratorsWithNones(self):
     '''Test the generation of features with multidim generators with none generators'''
     data = np.random.rand(200,3,10)
     gs = [[], [gens.maximum], []]
     fg = FeatureGenerator(data, gs)
     fg.generate()
     
     assert len(fg.generated_features) > 0, 'Bad generate() output'
     assert len(fg.generated_features.shape) == 2, 'Generated features is not 2-d'
     assert fg.generated_features.shape[0] == fg.datas.shape[0], \
                'Number of observations is not held constant during generate()' 
     assert fg.generated_features.shape[1] == 1, \
                'Number of generated features is not appropriate'
コード例 #5
0
 def testGenerateDiff2ndDim(self):
     '''Test the generation of features with multidim generators with oddly shaped generator dimensions'''
     data = np.random.rand(200,3,10)
     gs = [[gens.minimum], [gens.maximum, gens.mean], [gens.mean, gens.identity]]
     fg = FeatureGenerator(data, gs)
     fg.generated_features = [] # Reset the generator
     fg.generate()
     assert len(fg.generated_features) > 0, 'Bad generate() output'
     assert len(fg.generated_features.shape) == 2, 'Generated features is not 2-d'
     assert fg.generated_features.shape[0] == fg.datas.shape[0], \
                'Number of observations is not held constant during generate()' 
     assert fg.generated_features.shape[1] == 14, \
                'Number of generated features is not appropriate'
コード例 #6
0
 def testSelectThreshold(self):
     '''Test the effect of the threshold parameter on feature selection'''
     data = np.random.rand(200,3,10)
     fg = FeatureGenerator(data)
     fg.generators = [gens.identity]
     fg.generate()
     fg.select(0.00001)
     n01 = len(fg.selected_fracs)
     fg.select(0.5)
     n5 = len(fg.selected_fracs)
     sum5 = sum(fg.selected_fracs)
     assert n5 <= n01, 'Threshold has no effect on select()'
     assert sum5 < .75, 'Threshold does not bound eigenvalues correctly'
コード例 #7
0
 def testGenerateScaling(self):
     '''Test feature scaling'''
     data = np.array([[np.arange(10),np.arange(10)-5]],dtype='float')
     params = dict({'scalaing':False})
     generators = [gens.identity]
     fg = FeatureGenerator(data, generators=generators, gen_params=params)
     fg.generate()
     
     assert len(fg.scaling[0]) > 0, 'Scaling not generated'
     assert len(fg.scaling[0]) == len(fg.scaling[1]), 'Scaling parameters sized inappropriately'
     assert len(fg.scaling[0]) == fg.datas.shape[1], 'Scaling parameters sized incorrectly'
     assert fg.scaling[0].max() == 1 and fg.scaling[0].min() == 1, \
                 'Scaling "off" did not produce correct multipliers'
     assert fg.scaling[1].max() == 0 and fg.scaling[1].min() == 0, \
                 'Scaling "off" did not produce correct summands'
     assert fg.generated_features.max() > 1, 'Scaling applied when off'
     
     fg.generator_params['scaling'] = True
     fg.generate()
     assert len(fg.scaling[0]) > 0, 'Scaling not generated with scaling on'
     assert len(fg.scaling[0]) == len(fg.scaling[1]), 'Scaling parameters sized inappropriately with scaling on'
     assert len(fg.scaling[0]) == fg.datas.shape[1], 'Scaling parameters sized incorrectly with scaling on'
     assert not (fg.scaling[0].max() == 1 and fg.scaling[0].min() == 1), \
                 'Scaling "on" did not produce correct multipliers'
     assert not (fg.scaling[1].max() == 0 and fg.scaling[1].min() == 0), \
                 'Scaling "on" did not produce correct summands'
     assert fg.generated_features.max() == 1, 'Scaling (maximum) not applied correctly'
     assert fg.generated_features.min() == -1, 'Scaling (minimum) not applied correctly'
     assert fg.generated_features[0,0:10].min() == 0, 'Scaling on a per vector basis not applied correctly'
コード例 #8
0
 def testGenerate(self):
     '''Test the generation of features using the basic generators'''
     data = np.random.rand(200,3,10)
     fg = FeatureGenerator(data)
     gs = [gens.identity, gens.minimum, gens.maximum, gens.mean, gens.stdev]
     fg.generators = gs;
     fg.generated_features = [] # Reset the generator
     fg.generate()
     assert len(fg.generated_features) > 0, 'Bad generate() output'
     assert len(fg.generated_features.shape) == 2, 'Generated features is not 2-d'
     assert fg.generated_features.shape[0] == fg.datas.shape[0], \
                'Number of observations is not held constant during generate()' 
     
     fg.generators = [gens.identity, gens.maximum, gens.minimum, gens.mean]
     fg.datas = np.array([[[1,2,3]]])
     fg.generate()
     expected_genfeat = np.array([[1,2,3,3,1,2]])
     assert (fg.generated_features == expected_genfeat).all(), 'Generated features are not aligned correctly'
コード例 #9
0
ファイル: generator_test.py プロジェクト: yanatan16/minerva
class GeneratorTestCase(unittest.TestCase):
    def setUp(self):
        data = np.random.rand(200,3,10)
        self.fg = FeatureGenerator(data)
                       
    def testDwtGenerator(self):
        '''Test the use of the dwt generator'''
        # Run as default
        self.fg.generators = [gens.identity, gens.minimum, gens.dwt]
        self.fg.generate()
        
        # Test the use of a bad wavelet
        self.fg.generator_params['dwt:wavelet'] = 'wrong'
        expected_error = False
        try:
            self.fg.generate()
        except ValueError:
            expected_error = True
        assert expected_error, 'Bad wavelet parameter did not produce error'
        
        # Test the use of a non-default wavelet
        self.fg.generator_params['dwt:wavelet'] = 'haar'
        self.fg.generate()
        
        assert len(self.fg.generated_features) > 0, 'Bad generate() output with dwt'
        assert len(self.fg.generated_features.shape) == 2, 'Generated features is not 2-d'
        assert self.fg.generated_features.shape[0] == self.fg.datas.shape[0], \
                   'Number of observations is not held constant during generate()'
        
    def testFftGenerator(self):
        '''Test the use of the fft generator'''
        # Run as default
        self.fg.generators = [gens.identity, gens.minimum, gens.fft]
        self.fg.generate()
               
        assert len(self.fg.generated_features) > 0, 'Bad generate() output with fft'
        assert len(self.fg.generated_features.shape) == 2, 'Generated features is not 2-d'
        assert self.fg.generated_features.shape[0] == self.fg.datas.shape[0], \
                   'Number of observations is not held constant during generate()'
コード例 #10
0
 def testApplication(self):
     '''Test the application of the generated weights on data'''
     data = np.random.rand(200,3,10)
     fg = FeatureGenerator(data)
     fg.generators = [gens.identity]
     fg.generate()
     fg.select()
     
     applied_base = fg.apply_weights()
     
     assert len(applied_base.shape) == 2, 'apply_weights() returns non-2d shape for [] input'
     assert applied_base.shape[0] == fg.datas.shape[0], \
                     'apply_weights() doesnt keep first dimension constant on [] input'
     assert applied_base.shape[1] == len(fg.selected_fracs), \
                     'apply_weights() does not keep the same number of features as selected'
                 
     new_data = np.random.rand(int(fg.datas.shape[0]/2), fg.datas.shape[1], fg.datas.shape[2])
     applied_rand = fg.apply_weights(new_data)
     
     assert len(applied_rand.shape) == 2, 'apply_weights() returns non-2d shape for new data input'
     assert applied_rand.shape[0] == new_data.shape[0], \
                     'apply_weights() doesnt keep first dimension constant on new data input'
     assert applied_rand.shape != applied_base.shape, 'New input data had no effect on return from apply_weights()' 
コード例 #11
0
ファイル: generator_test.py プロジェクト: yanatan16/minerva
 def setUp(self):
     data = np.random.rand(200,3,10)
     self.fg = FeatureGenerator(data)