## Python Program to Implement Candidate Elimination Algorithm to get Consistent Version Space

Exp. No. 2. For a given set of training data examples stored in a .CSV file, implement and demonstrate the Candidate-Elimination algorithm in python to output a description of the set of all hypotheses consistent with the training examples.

### Candidate Elimination Algorithm Machine Learning

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")

### Dataset:

EnjoySport Dataset is saved as .csv (comma separated values) file in the current working directory otherwise use the complete path of the dataset set in the program:

sky | airtemp | humidity | wind | water | forcast | enjoysport |

sunny | warm | normal | strong | warm | same | yes |

sunny | warm | high | strong | warm | same | yes |

rainy | cold | high | strong | warm | change | no |

sunny | warm | high | strong | cool | change | yes |

### Output:

Instances are:

[[‘sunny’ ‘warm’ ‘normal’ ‘strong’ ‘warm’ ‘same’]

[‘sunny’ ‘warm’ ‘high’ ‘strong’ ‘warm’ ‘same’]

[‘rainy’ ‘cold’ ‘high’ ‘strong’ ‘warm’ ‘change’]

[‘sunny’ ‘warm’ ‘high’ ‘strong’ ‘cool’ ‘change’]]

Target Values are: [‘yes’ ‘yes’ ‘no’ ‘yes’]

Initialization of specific_h and genearal_h

Specific Boundary: [‘sunny’ ‘warm’ ‘normal’ ‘strong’ ‘warm’ ‘same’]

Generic Boundary: [[‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’]]

Instance 1 is [‘sunny’ ‘warm’ ‘normal’ ‘strong’ ‘warm’ ‘same’] Instance is Positive

Specific Bundary after 1 Instance is [‘sunny’ ‘warm’ ‘normal’ ‘strong’ ‘warm’ ‘same’]

Generic Boundary after 1 Instance is [[‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’]]

Instance 2 is [‘sunny’ ‘warm’ ‘high’ ‘strong’ ‘warm’ ‘same’] Instance is Positive

Specific Bundary after 2 Instance is [‘sunny’ ‘warm’ ‘?’ ‘strong’ ‘warm’ ‘same’]

Generic Boundary after 2 Instance is [[‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’]]

Instance 3 is [‘rainy’ ‘cold’ ‘high’ ‘strong’ ‘warm’ ‘change’] Instance is Negative

Specific Bundary after 3 Instance is [‘sunny’ ‘warm’ ‘?’ ‘strong’ ‘warm’ ‘same’]

Generic Boundary after 3 Instance is [[‘sunny’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘warm’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘same’]]

Instance 4 is [‘sunny’ ‘warm’ ‘high’ ‘strong’ ‘cool’ ‘change’] Instance is Positive

Specific Bundary after 4 Instance is [‘sunny’ ‘warm’ ‘?’ ‘strong’ ‘?’ ‘?’]

Generic Boundary after 4 Instance is [[‘sunny’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘warm’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’]]

Final Specific_h: [‘sunny’ ‘warm’ ‘?’ ‘strong’ ‘?’ ‘?’]

Final General_h: [[‘sunny’, ‘?’, ‘?’, ‘?’, ‘?’, ‘?’], [‘?’, ‘warm’, ‘?’, ‘?’, ‘?’, ‘?’]]

### Solved Numerical Examples:

**Candidate Elimination Algorithm Solved Example – 1**

**Candidate Elimination Algorithm Solved Example – 2**

**Candidate Elimination Algorithm Solved Example – 3**

## Summary

This tutorial discusses how to Implement and demonstrate the Candidate Elimination algorithm in Python for finding the Consistent version space based on a given set of training data samples. The training data is read from a .CSV file. If you like the tutorial share with your friends. Like the **Facebook page** for regular updates and **YouTube channel** for video tutorials.

V XZVNBN M

evehi, i dont know haw to rate you,but your awsome.. 🙂