print('{:18s} = {:.4f}'.format('Standard deviation', sd_c1)) print('{:18s} = {:.4f}\n'.format('Threshold', threshold_c1)) pass_rate = utils.get_rate(x_passed_s2, x_passed_s1) print(f'Pass rate = {pass_rate * 100:.4f}%') # print('Blocked by Reliability Domain:') # utils.print_blocked_samples(x_passed_s1, ind_passed_s2) # %% # Stage 3 - Decidability print('\n---------- Decidability ----------------') model_knn = knn.KNeighborsClassifier( n_neighbors=k, n_jobs=-1, weights='distance') model_knn.fit(x_train, y_train) x_passed_s3, ind_passed_s3 = ad.check_decidability( x_passed_s2, pred_passed_s2, model_knn) # Print pass_rate = utils.get_rate(x_passed_s3, x_passed_s2) print(f'Pass rate = {pass_rate * 100:.4f}%') # print('Blocked by Decidability Domain:') # utils.print_blocked_samples(x_passed_s2, ind_passed_s3) # %% # Results score = accuracy_score(y_ae, pred_ae) print(f'Accuracy before AD = {score*100:.4f}%') print() pass_rate = utils.get_rate(x_passed_s3, x_ae)
# %% # Decidability Domian uses the kNN model which is trained by the entire training # set. # Using the same value from Reliability Domain. print(f'k = {k}') model_knn = knn.KNeighborsClassifier( n_neighbors=k, n_jobs=-1, weights='distance' ) model_knn.fit(x_train, y_train) # %% # Testing Decidability Domain x_passed_dd, idx_within_dd = ad.check_decidability( x_ae, np.array(pred_ae), model_knn, verbose=1) print(f'\nPass rate = {len(x_passed_dd) / len(x_ae) * 100.0:.4f}%') # %% def print_blocked_samples(x, ind_passed): ind_blocked = utils.get_filtered_indices(x, ind_passed) for x_i in x[ind_blocked]: print(f'[{x_i[0]: .4f}, {x_i[1]: .4f}]') # %% [markdown] # ## Full pipeline # The entire pipeline for AD # %% # Preparing the test set x_new = x_ae