test_y = LabelEncoder().fit_transform(test_y)

gb_tuned = GradientBoostingClassifier(random_state=1,
                                      learning_rate=0.05,
                                      n_estimators=500,
                                      max_depth=7,
                                      min_samples_split=2,
                                      min_samples_leaf=1,
                                      max_features=10,
                                      subsample=1)
gb_tuned = PrecisionRecallCurve(gb_tuned,
                                per_class=True,
                                iso_f1_curves=True,
                                fill_area=False,
                                micro=False)
gb_tuned.fit(train_x, train_y)
'''
prediction_train = gb_tuned.predict(train_x)
prediction_test = gb_tuned.predict(test_x)
print('Training accuracy:', accuracy_score(train_y, prediction_train))
print('Testing accuracy:', accuracy_score(test_y, prediction_test))
print('Classification report:')
print(classification_report(test_y, prediction_test))
print('Confusion matrix:')
print(confusion_matrix(test_y, prediction_test))
'''

# Draw precision-recall curve
gb_tuned.score(test_x, test_y)
gb_tuned.poof()