"""
*******************************************************
Owner: Ashutosh Jha
For: APPCAIR BITS Pilani Goa Campus, Reflexis Systems
Function Name: CreateFirstRule
Takes the first row from the dataset, target column,
column list, maximal set and instance number z as input
Creates first rule as c0 and adds name, prediction,
row number, input condition and data.
*******************************************************
"""
from chooseRule import chooseRule
from addChosenRule import addChosenRule
from Tree import Tree
from addCombination import addCombination
from addCombinationRules import addCombinationRules
def CreateFirstRule(first_row,target_col,col_list,maximal_set,z):
#print(first_row)
#creates the first node in RDR tree.
c0 = Tree()
c0.name = "c0"
c0.row_no = z
if(target_col != None):
c0.pred_label = first_row[target_col]
rule_list,feature_used,isstr = addCombination(col_list,first_row,target_col)
if(rule_list != None):
addCombinationRules(c0,rule_list,first_row,isstr)
c0.f_used = feature_used
else:
j=1
for i in range(0,len(col_list)):
if(col_list[i] != target_col):
if(type(first_row[col_list[i]])== str):
maximal_set[j] = [str(col_list[i]) , str(first_row[col_list[i]]), "str"]
j = j+1
else:
maximal_set[j] = [str(col_list[i]) , str(first_row[col_list[i]]), "nstr"]
j = j+1
#print(maximal_set)
rule_no = chooseRule(j,maximal_set)
#print(maximal_set[rule_no])
#print(noOfNodes)
addChosenRule(c0,maximal_set[rule_no])
if(target_col == None):
c0.pred_label = input("Since this dataset has no target column, which can be used to indicate conclusion" +
" from a rule, kindly assign a class value as conclusion if this rule is satisfied:")
c0.f_used.append(maximal_set[rule_no][0])
maximal_set.clear()
print("\nThe condition added by you:")
print(c0.name,":",c0.inp_cond)
return c0