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)
Пример #2
0
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()))