from load_data import load_heart_uci from measures import equalized_odds_measure_TP, equalized_odds_measure_FP, \ statistical_parity_measure, disparate_impact_measure from sklearn import svm from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from sklearn.decomposition import PCA from sklearn.preprocessing import MinMaxScaler set_of_exps = 2 if set_of_exps == 1: dataset = load_heart_uci() scaler = MinMaxScaler(feature_range=(-1, 1)) dataset.data = scaler.fit(dataset.data).transform(dataset.data) # print(heart.data[1, :], heart.data[2, :], heart.data[3, :]) # % for train ntrain = 5 * len( dataset.target ) // 10 # from 30% to 50% the accuracy is the same BUT more fairness! # Train an SVM using the training set clf = svm.SVC(C=1.0) clf.fit(dataset.data[:ntrain, :], dataset.target[:ntrain]) # The dataset becomes the test set dataset.data = dataset.data[ntrain:, :] dataset.target = dataset.target[ntrain:]
self.model.fit(self.dataset.data, self.dataset.target) #if hasattr(self.model, 'best_estimator_'): # self.model = self.model.best_estimator_ #self.coef_ = self.model.coef_ #self.intercept_ = self.model.intercept_ if __name__ == "__main__": experiment_number = 0 if experiment_number == 0: dataset_train = load_binary_diabetes_uci() dataset_test = load_binary_diabetes_uci() sensible_feature = 1 # sex elif experiment_number == 1: dataset_train = load_heart_uci() dataset_test = load_heart_uci() sensible_feature = 1 # sex elif experiment_number == 2: dataset_train, dataset_test = load_adult(smaller=False) sensible_feature = 9 # sex print('Different values of the sensible feature', sensible_feature, ':', set(dataset_train.data[:, sensible_feature])) elif experiment_number == 3: dataset_train, dataset_test = load_adult_race(smaller=False) sensible_feature = 8 # race print('Different values of the sensible feature', sensible_feature, ':', set(dataset_train.data[:, sensible_feature])) if experiment_number in [0, 1]: # % for train