supervised machine learning return ( )* (efeat __doc__ __doc__+"*"+ __doc__ return feat def eq_feat( , )""" new feature that is if and give same value ""def feat( )return if ( )== (eelse feat __doc__ __doc__+"=="+ __doc__ return feat def neq_feat( , )""" new feature that is if and give different values ""def feat( )return if ( )!= (eelse feat __doc__ __doc__+"!="+ __doc__ return feat examplelearnproblem py -(continued from learnproblem import data_set_augmented,prod_feat data data_from_file('data/holiday csv'num_train= target_index=- data data_from_file('data/iris data'prob_test= / target_index=- #data data_from_file('data/spect csv'prob_test= target_index= dataplus data_set_augmented(data,[],[prod_feat]dataplus data_set_augmented(data,[],[prod_feat,neq_feat]exercise for symmetric propertiessuch as productwe don' need both as well as as extra properties allow the user to be able to declare feature constructors as symmetric (by associating boolean feature with themchange construct features so that it does not create both versions for symmetric combiners generic learner interface learner takes dataset (and possibly other arguments specific to the methodto get it to learnwe call the learn(method this implements displayable so that we can display traces at multiple levels of detail (and perhaps with guilearnproblem py -(continued from display import displayable class learner(displayable)def __init__(selfdataset)raise notimplementederror("learner __init__"abstract method version june