def train(self): allSamples = goodSamples = 0.0 self.log('Starting the real training...', 'main') if self.sender() == self.ui.actionTrain: procData = processData(self.trainPat) result = procData.readContents() data = inputData() data.addAll(result) self.ls = Lamstar.lamstar(15, 1) for iter in range(10): print('Iteration %s' % iter) for i in range(data.getCount()): print('Training data : ', i) self.arr2Image(data.getWholeArray(i), 'input') #raw_input('Enter') self.ls.train(data.getSubWords(i), data.getOutputs(i)) if (self.debug > 0): self.log('Iteration no:' + str(iter), 'main') self.log('No of nodes' + str(self.ls.getNoOfNodes()), 'main') elif self.sender() == self.ui.actionRun_Test: #goodSamples = allSamples = 0 procData = processData(self.testPat) result = procData.readContents() data = inputData() data.addAll(result) files = [] for afile in os.listdir(self.testingDir): if afile[-3:] == 'png' and afile.find('procced') != -1: files.append(afile) files.sort() print('Quering for test data') self.log('Quering for test data', 'main') print('number of items: %s' % (data.getCount())) for i in range(data.getCount()): self.log('Querying for ' + files[i].rpartition('/')[-1], 'query') print('Querying for ' + files[i].rpartition('/')[-1]) self.arr2Image(data.getWholeArray(i), 'input') (result, BMU) = self.ls.query(data.getSubWords(i)) arr = self.constructArr(BMU) self.arr2Image(arr, 'output') self.log(result, 'status') allSamples += 1 if files[i].find(result + '-') != -1: goodSamples += 1 self.ui.resultLabel.setText(result) self.log('No of nodes: ' + str(self.ls.getNoOfNodes()), 'main') self.log('No of links: ' + str(self.ls.getNoOfLinks()), 'main') self.log( 'Accuracy = ' + str( (float(goodSamples) / allSamples) * 100) + '%', 'main') print('Good sample=%s all=%s' % (goodSamples, allSamples))
def train(self): allSamples = goodSamples = 0.0 self.log('Starting the real training...', 'main') if self.sender() == self.ui.actionTrain: procData = processData(self.trainPat) result = procData.readContents() data = inputData() data.addAll(result) self.ls = Lamstar.lamstar(15, 1) for iter in range(10): print('Iteration %s' % iter) for i in range(data.getCount()): # print('Training data : ', i) # self.arr2Image(data.getWholeArray(i),'input') # raw_input('Enter') self.ls.train(data.getSubWords(i), data.getOutputs(i)) if(self.debug > 0): self.log('Iteration no:' + str(iter), 'main') self.log('No of nodes' + str(self.ls.getNoOfNodes()), 'main') elif self.sender() == self.ui.actionRun_Test: goodSamples = allSamples = 0 procData = processData(self.testPat) result = procData.readContents() data = inputData() data.addAll(result) files = [] for afile in os.listdir(self.testingDir): if afile[-3:] == 'jpg' and afile.find('procced') != -1: files.append(afile) files.sort() print('Quering for test data') self.log('Quering for test data', 'main') print('number of items: %s' % (data.getCount())) for i in range(data.getCount()): self.log('Querying for ' + files[i].rpartition('/')[-1], 'query') print('Querying for ' + files[i].rpartition('/')[-1]) self.arr2Image(data.getWholeArray(i), 'input') (result, BMU) = self.ls.query(data.getSubWords(i)) arr = self.constructArr(BMU) self.arr2Image(arr, 'output') self.log(result, 'status') allSamples += 1 if files[i].find(result + '-') != -1: goodSamples += 1 self.ui.resultLabel.setText(result) self.log('No of nodes: ' + str(self.ls.getNoOfNodes()), 'main') self.log('No of links: ' + str(self.ls.getNoOfLinks()), 'main') self.log('Accuracy = ' + str((float(goodSamples) / allSamples) * 100) + '%', 'main') print ('Good sample=%s all=%s' % (goodSamples, allSamples))
return noNodes def getNoOfLinks(self): return len(self.Link2OutputDict) def printTable(self): for key in sorted(self.LinkTable.keys()): print('%s %s' % (key, self.LinkTable[key])) def maxFromDict(self, dictionary): return max(dictionary.iteritems(), key=lambda item: sum(item[1]))[0] if __name__ == '__main__': procData = processData('data/images/processed/all/150x200.pat') result = procData.readContents() data = inputData() data.addAll(result) preData = processData('data/images/processed/unseen/unseen.pat') result = preData.readContents() unseenData = inputData() unseenData.addAll(result) ls = lamstar(10, 1) for _ in range(10): for i in range(data.getCount()): # print('Training data : ', i) ls.train(data.getSubWords(i), data.getOutputs(i)) # sys.stdin.read(1)
def getNoOfLinks(self): return len(self.Link2OutputDict) def printTable(self): for key in self.LinkTable.keys(): print('%s %s' % (key, self.LinkTable[key])) def maxFromDict(self, dictionary): #return min(dictionary.items(), key=lambda item: sum(item[1])/float(len(item[1])))[0] return max(dictionary.items(), key=lambda item: sum(item[1]))[0] if __name__ == '__main__': #procData = processData('data/images/processed/all/150x200.pat') procData = processData('data/clevepro.pat') result = procData.readContents() data = inputData() data.addAll(result) # #preData = processData('data/images/processed/unseen/unseen.pat') # preData = processData('data/.txt') # result = preData.readContents() # unseenData = inputData() # unseenData.addAll(result) ls = lamstar(10, 1) for _ in range(10): for i in range(data.getCount()): print('Training data : ', i) ls.train(data.getSubWords(i), data.getOutputs(i))
def train( self, traindata, iternum, distth, bywho, ): procData = processData(traindata, self.label) result = procData.readContents() data = inputData() data.addAll(result) b = [] for i in range(0, data.getCount()): b.append(i) if bywho == 'train': if self.trainnumber > data.getCount(): #에외처리 print( "training data is larger than number of dataset. Choose trainnum lower than " + str(data.getCount())) return 0 self.ls = Lamstar.lamstar(self.subwordnumber, 1) #램스타 객체 생성(서브워드 갯수만큼) #b = random.sample(range(0, data.getCount()), self.trainnumber) for iter in range(iternum): #print('Training Iteration %s' % iter) for i in range(self.trainnumber): #num of subwords #print('Training data : ', b[i]) #샘플링 데이터 인덱스 확인 가능 self.ls.train(data.getSubWords(b[i], self.subwordlist), data.getOutputs(b[i]), distth) #트레이닝 elif bywho == 'test': b = b[data.getCount() - self.testnumber:data.getCount()] accuarcy = 0 TP = 0 TN = 0 FP = 0 FN = 0 #if self.testnumber > data.getCount(): # print("testing data is larger than number of dataset. Choose testnum lower than " + str(data.getCount())) # return 0 print("Training iteration: " + str(self.iternum)) #a =[] #for i in range(0, data.getCount()): # a.append(i) for i in range(len(b)): # p = a[random.randrange(0, len(a) - 1)] #print("") #print("Validation "+str(i)) queryvalue = self.ls.query( data.getSubWords(b[i], self.subwordlist)) if queryvalue == data.getOutputs(b[i]): # print("GT : " + data.getOutputs(i) +" ST : " + queryvalue + " Result : TRUE") accuarcy += 1 # else: # print("GT : " + data.getOutputs(i) + " ST : " + queryvalue + " Result : FALSE") # print("") if int(data.getOutputs(b[i])) == 0 and int(queryvalue) == 0: TN += 1 if int(data.getOutputs(b[i])) == 1 and int(queryvalue) == 1: TP += 1 if int(data.getOutputs(b[i])) == 0 and int(queryvalue) == 1: FP += 1 if int(data.getOutputs(b[i])) == 1 and int(queryvalue) == 0: FN += 1 accuarcy /= int(len(b)) # 분할 validation 버젼 #accuarcy /= self.testnumber #랜덤 샘플링 버젼 #print("Accuarcy : " + str(accuarcy * 100) + "%") if TP == 20: exit else: if TP + FP == 0: prec = 0 elif TN + FP == 0: print("TN + FP is Zero! setting prec to 0") prec = 0 else: prec = TN / (TN + FP) if TP + FN == 0: rec = 0 else: rec = TP / (TP + FN) #accuracy = (TP + TN)/(TP + TN + FP + FN) #if (rec == 0) and (prec == 0): exit print("Sensitivity:" + str(rec * 100) + "%", "Precision:" + str(prec * 100) + "%", "Accuarcy:" + str(accuarcy * 100) + "%") print("TP:" + str(TP) + " TN:" + str(TN) + " FP:" + str(FP) + " FN:" + str(FN)) print("")