Esempio n. 1
0
 def fit(self,
         stable_antecedents: List[str],
         flexible_antecedents: List[str],
         consequent: str,
         conf: float,
         supp: float,
         desired_classes: List[str] = None,
         desired_changes: List[list] = None,
         is_nan: bool = False,
         is_reduction: bool = True,
         min_stable_antecedents: int = 1,
         min_flexible_antecedents: int = 1):
     """
     Get action rules.
     Define antecedent and consequent.
     - stable_antecedents - List of column names.
     - flexible_antecedents - List of column names.
     - consequent - Name of column.
     Confidence and support.
     - conf - value in % for confidence of classification rules.
     - supp - value in % for support of classification rules.
     Desired classes or desired changes must be entered.
     - desired_classes - List of decision states. For example ["1"]. DEFAULT: None
     - desired_changes - List of desired changes. For example [["0", "1"]]. DEFAULT: None
     Should nan values be used.
     - is_nan - True means nan values are used, False means nan values are not used. DEFAULT: FALSE
     Should the reduction table be used.
     - is_reduction - is reduction table used DEFAULT: TRUE
     Minimal number of stable and flexible couples
     - min_stable_antecedents - min. stable couples. DEFAULT: 1
     - min_flexible_antecedents - min. flexible couples. DEFAULT: 1
     """
     if bool(desired_classes) != bool(desired_changes):
         desired_state = DesiredState(desired_classes=desired_classes,
                                      desired_changes=desired_changes)
     else:
         raise Exception(
             "Desired classes or desired changes must be entered")
     antecedents = stable_antecedents + flexible_antecedents
     self.decisions.prepare_data_fim(antecedents, consequent)
     self.decisions.fit_fim_apriori(conf=conf, support=supp)
     self.decisions.generate_decision_table()
     stable = self.decisions.decision_table[stable_antecedents]
     flex = self.decisions.decision_table[flexible_antecedents]
     target = self.decisions.decision_table[[consequent]]
     supp = self.decisions.support
     conf = self.decisions.confidence
     reduced_tables = Reduction(stable, flex, target, desired_state, supp,
                                conf, is_nan)
     if is_reduction:
         reduced_tables.reduce()
     action_rules = ActionRules(
         reduced_tables.stable_tables, reduced_tables.flexible_tables,
         reduced_tables.decision_tables, desired_state, reduced_tables.supp,
         reduced_tables.conf, is_nan, min_stable_antecedents,
         min_flexible_antecedents)
     action_rules.fit()
     self.action_rules = action_rules.action_rules
def getSummary(): #actually calculate summary
	opLabel.pack()
	opEntry.pack()
	opEntry.config(state='normal' , bg="white" , fg="black")
	opEntry.delete(1.0,END)
	opEntry.insert(INSERT,"Generating Summary...")

	global endTime1,endTime2	
	
	
	startTime = time.time()
	text = ipEntry.get("1.0", END)
	
	ps = PorterStemmer()
	red_ra=redRatio.get()/100.00
	
	if var1.get():
		words = text.split()
		for w in words:
			text += ps.stem(w)
			text += " "
	
	if var6.get()==1:
		r = Reduction() #object of class Red..
		reduced_text = r.reduce(text, red_ra)
		op=' '.join(reduced_text)
		global opTA
		opTA=op
	elif var6.get()==2:
		m = modelVC.summary()
		op = m.summarize(text,red_ra)
		global opPA
		opPA=op


	if var2.get()==1:
		op=shortForm.shortF(op)

	opEntry.delete(1.0,END)
	opEntry.insert(INSERT, op)
	
	if var6.get()==1: 
		endTime1 = time.time() - startTime
		print("Time taken: %f secs" %endTime1)
		if var4.get():
			tkMessageBox.showinfo("Statistics", "Time taken to complete: %f secs" %endTime)
	
	if var6.get()==2: 
		endTime2 = time.time() - startTime
		print("Time taken: %f secs" %endTime2)
		if var4.get():
			tkMessageBox.showinfo("Statistics", "Time taken to complete: %f secs" %endTime)

	if var3.get() == 1:
		file_f = open("log.txt", "a")
		lenText=len(text)
		file_f.write("\nInput length: %d" %lenText)
		lenText = len(op)
		file_f.write("\tSummary length: %d" % lenText)
		file_f.write('\nStemming: %d' %var1.get())
		file_f.write('\tShort Forms: %d' %var2.get())
		file_f.write('\tReduction Ratio: %d percent' % redRatio.get())
		file_f.write('\tModel: %d ' % var6.get())
		if var6.get()==1: 
			file_f.write("\nTime taken: %f secs\n" %endTime1)
		if var6.get()==2: 
			file_f.write("\nTime taken: %f secs\n" %endTime2)

		file_f.close()