Lab 2


For each training example d, do:

     If d is positive example

         Remove from G any hypothesis h inconsistent with d

         For each hypothesis s in S not consistent with d:

              Remove s from S

              Add to S all minimal generalizations of s consistent with d and having a generalization in G

              Remove from S any hypothesis with a more specific h in S

     If d is negative example

          Remove from S any hypothesis h inconsistent with d

          For each hypothesis g in G not consistent with d:

                Remove g from G

                Add to G all minimal specializations of g consistent with d and having a specialization in S

                Remove from G any hypothesis having a more general hypothesis in G

Python Program to Implement and Demonstrate FIND-S Algorithm

import numpy as np 

import pandas as pd


data = pd.read_csv(path+'/enjoysport.csv')

concepts = np.array(data.iloc[:,0:-1])

print("\nInstances are:\n",concepts)

target = np.array(data.iloc[:,-1])

print("\nTarget Values are: ",target)


def learn(concepts, target): 

    specific_h = concepts[0].copy()

    print("\nInitialization of specific_h and genearal_h")

    print("\nSpecific Boundary: ", specific_h)

    general_h = [["?" for i in range(len(specific_h))] for i in range(len(specific_h))]

    print("\nGeneric Boundary: ",general_h)  

    for i, h in enumerate(concepts):

        print("\nInstance", i+1 , "is ", h)

        if target[i] == "yes":

            print("Instance is Positive ")

            for x in range(len(specific_h)): 

                if h[x]!= specific_h[x]:                    

                    specific_h[x] ='?'                     

                    general_h[x][x] ='?'

                   

        if target[i] == "no":            

            print("Instance is Negative ")

            for x in range(len(specific_h)): 

                if h[x]!= specific_h[x]:                    

                    general_h[x][x] = specific_h[x]                

                else:                    

                    general_h[x][x] = '?'        

        

        print("Specific Bundary after ", i+1, "Instance is ", specific_h)         

        print("Generic Boundary after ", i+1, "Instance is ", general_h)

        print("\n")


    indices = [i for i, val in enumerate(general_h) if val == ['?', '?', '?', '?', '?', '?']]    

    for i in indices:   

        general_h.remove(['?', '?', '?', '?', '?', '?']) 

    return specific_h, general_h 


s_final, g_final = learn(concepts, target)


print("Final Specific_h: ", s_final, sep="\n")

print("Final General_h: ", g_final, sep="\n")


Comments

Popular posts from this blog

Lab 1 ai