rdr-py / code / CreateFirstRule.py
CreateFirstRule.py
Raw
"""
*******************************************************
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