def addSample(self, f1, f2, label): #if self.labels == []: self.labels.append(label) #else: # self.labels = np.concatenate((np.array(self.labels),label)) # for adding batches of features res=[] res2=[] for key in selectedFeatures: if key == "Global<Maximum >" or key=="Global<Minimum >": # the global min/max intensity is not interesting continue elif key == 'RegionCenter': res.append(np.linalg.norm(f1[key]-f2[key])) #difference of features res2.append(np.linalg.norm(f1[key]*f2[key])) #product of features elif key == 'Histogram': #contains only zeros, so trying to see what the prediction is without it continue elif key == 'Polygon': #vect has always another length for different objects, so center would be relevant continue else: if not isinstance(f1[key], np.ndarray): res.append(float(f1[key]) - float(f2[key]) ) #prepare for flattening res2.append(float(f1[key]) * float(f2[key]) ) #prepare for flattening else: res.append((f1[key]-f2[key]).tolist() ) #prepare for flattening res2.append((f1[key]*f2[key]).tolist() ) #prepare for flattening x= np.asarray(flatten(res)) #flatten x2= np.asarray(flatten(res2)) #flatten assert(np.any(np.isnan(x)) == False) assert(np.any(np.isnan(x2)) == False) assert(np.any(np.isinf(x)) == False) assert(np.any(np.isinf(x2)) == False) #x= x[~np.isnan(x)] #x2= x2[~np.isnan(x2)] #not getting the nans out YET features = np.concatenate((x,x2)) if self.mydata is None: self.mydata = features else: self.mydata = np.vstack((self.mydata, features))
def allFeatures(features, labels, neg_labels): j=0 lab=[] for i in range(0,len(features)-1): for k in labels[i]: if j == 0: x = getFeatures(features[i],features[i+1],k[0],k[1]) j+=1 else: x = np.vstack((x,getFeatures(features[i],features[i+1],k[0],k[1]))) lab.append(1) for k in neg_labels[i]: if k not in labels[i].tolist(): x = np.vstack((x,getFeatures(features[i],features[i+1],k[0],k[1]))) lab.append(0) x = x[:,~np.isnan(x).any(axis=0)] #now removing the nans return x,np.asarray(lab)
def find_features_without_NaNs(features): """ Remove all features from the list of selected features which have NaNs """ selectedFeatures = features[0].keys() for featuresPerFrame in features: for key, value in featuresPerFrame.iteritems(): if not isinstance(value, list) and (np.any(np.isnan(value)) or np.any(np.isinf(value))): try: selectedFeatures.remove(key) except: pass # has already been deleted forbidden = ["Global<Maximum >", "Global<Minimum >", 'Histogram', 'Polygon'] for f in forbidden: if f in selectedFeatures: selectedFeatures.remove(f) return selectedFeatures
def find_features_without_NaNs(features): """ Remove all features from the list of selected features which have NaNs """ selectedFeatures = features[0].keys() for featuresPerFrame in features: for key, value in featuresPerFrame.items(): if not isinstance(value, list) and (np.any(np.isnan(value)) or np.any(np.isinf(value))): try: selectedFeatures.remove(key) except: pass # has already been deleted forbidden = ["Global<Maximum >", "Global<Minimum >", 'Histogram', 'Polygon', 'Defect Center', 'Center', 'Input Center', 'Weighted<RegionCenter>'] for f in forbidden: if f in selectedFeatures: selectedFeatures.remove(f) selectedFeatures.sort() return selectedFeatures