def train_test_50(self): global features, feature_names, target, target_names labels = target_names[target] is_setosa = labels == "setosa" features_wo_setosa = features[~is_setosa] labels_wo_setosa = labels[~is_setosa] is_virginica = (labels_wo_setosa == "virginica") # split the features in train and test training = np.tile([False, True], 50) testing = ~training # display the resulting accuracy for both series model_training = getModel(features_wo_setosa[training], is_virginica[training], feature_names) accuracy_training = accuracy(model_training, features_wo_setosa[training], is_virginica[training]) accuracy_testing = accuracy(model_training, features_wo_setosa[testing], is_virginica[testing]) logging.info("Training Accuracy : %f ----Testing Accuracy = %f ", accuracy_training, accuracy_testing)
from main.ch02.utils import getModel, accuracy data = load_iris() features = data['data'] labels = data['target_names'][data['target']] # We are going to remove the setosa examples as they are too easy: is_setosa = (labels == 'setosa') features = features[~is_setosa] labels = labels[~is_setosa] # Now we classify virginica vs non-virginica is_virginica = (labels == 'virginica') # Split the data in two: testing and training testing = np.tile([True, False], 50) # testing = [True,False,True,False,True,False...] # Training is the negation of testing: i.e., datapoints not used for testing, # will be used for training training = ~testing model = getModel(features[training], is_virginica[training]) train_accuracy = accuracy(features[training], is_virginica[training], model) test_accuracy = accuracy(features[testing], is_virginica[testing], model) print('''\ Training accuracy was {0:.1%}. Testing accuracy was {1:.1%} (N = {2}). '''.format(train_accuracy, test_accuracy, testing.sum()))