From 8a4df5a4a24924ed5652d3db61e56795503e4e28 Mon Sep 17 00:00:00 2001 From: Maya Anderson Date: Mon, 13 Mar 2023 00:30:18 +0200 Subject: [PATCH] Additional review comments - moved result to score base class Signed-off-by: Maya Anderson --- apt/risk/data_assessment/dataset_attack.py | 3 +-- .../dataset_attack_membership_knn_probabilities.py | 8 ++++---- apt/risk/data_assessment/dataset_attack_result.py | 13 +++++-------- .../dataset_attack_whole_dataset_knn_distance.py | 2 +- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/apt/risk/data_assessment/dataset_attack.py b/apt/risk/data_assessment/dataset_attack.py index 794e38b..9eb9934 100644 --- a/apt/risk/data_assessment/dataset_attack.py +++ b/apt/risk/data_assessment/dataset_attack.py @@ -37,8 +37,7 @@ class DatasetAttack(abc.ABC): :param original_data_non_members: A container for the holdout original samples and labels, only samples are used in the assessment :param synthetic_data: A container for the synthetic samples and labels, only samples are used in the assessment - :param config: Configuration parameters to guide the assessment process such as which attack - frameworks to use + :param config: Configuration parameters to guide the assessment process :param dataset_name: A name to identify the dataset under attack, optional :param attack_strategy_utils: Utils for use with the attack strategy, optional """ diff --git a/apt/risk/data_assessment/dataset_attack_membership_knn_probabilities.py b/apt/risk/data_assessment/dataset_attack_membership_knn_probabilities.py index 3891ad1..0e7b32b 100644 --- a/apt/risk/data_assessment/dataset_attack_membership_knn_probabilities.py +++ b/apt/risk/data_assessment/dataset_attack_membership_knn_probabilities.py @@ -13,7 +13,7 @@ from sklearn.neighbors import NearestNeighbors from apt.risk.data_assessment.attack_strategy_utils import KNNAttackStrategyUtils from apt.risk.data_assessment.dataset_attack import DatasetAttackMembership, Config from apt.risk.data_assessment.dataset_attack_result import DatasetAttackScore, DatasetAttackResultMembership, \ - DatasetAttackScoreWithResult, DEFAULT_DATASET_NAME + DEFAULT_DATASET_NAME from apt.utils.datasets import ArrayDataset @@ -41,7 +41,7 @@ class DatasetAttackConfigMembershipKnnProbabilities(Config): @dataclass -class DatasetAttackScoreMembershipKnnProbabilities(DatasetAttackScoreWithResult): +class DatasetAttackScoreMembershipKnnProbabilities(DatasetAttackScore): """DatasetAttackMembershipKnnProbabilities privacy score. Attributes ---------- @@ -50,8 +50,8 @@ class DatasetAttackScoreMembershipKnnProbabilities(DatasetAttackScoreWithResult) average_precision_score: the proportion of predicted members that are correctly members assessment_type : assessment type is 'MembershipKnnProbabilities', to be used in reports """ - roc_auc_score: float - average_precision_score: float + roc_auc_score: float = -1.0 + average_precision_score: float = -1.0 assessment_type: str = 'MembershipKnnProbabilities' diff --git a/apt/risk/data_assessment/dataset_attack_result.py b/apt/risk/data_assessment/dataset_attack_result.py index 425c844..813e642 100644 --- a/apt/risk/data_assessment/dataset_attack_result.py +++ b/apt/risk/data_assessment/dataset_attack_result.py @@ -1,23 +1,20 @@ from dataclasses import dataclass, field +from typing import Optional import numpy as np DEFAULT_DATASET_NAME = "dataset" -@dataclass -class DatasetAttackScore: - dataset_name: str - - @dataclass class DatasetAttackResult: pass -@dataclass(repr=False) -class DatasetAttackScoreWithResult(DatasetAttackScore): - result: DatasetAttackResult = field(repr=False) +@dataclass +class DatasetAttackScore: + dataset_name: str + result: Optional[DatasetAttackResult] = None @dataclass diff --git a/apt/risk/data_assessment/dataset_attack_whole_dataset_knn_distance.py b/apt/risk/data_assessment/dataset_attack_whole_dataset_knn_distance.py index d85f725..b1ade3b 100644 --- a/apt/risk/data_assessment/dataset_attack_whole_dataset_knn_distance.py +++ b/apt/risk/data_assessment/dataset_attack_whole_dataset_knn_distance.py @@ -46,7 +46,7 @@ class DatasetAttackScoreWholeDatasetKnnDistance(DatasetAttackScore): A value of 0.5 or close to it means good privacy. assessment_type : assessment type is 'WholeDatasetKnnDistance', to be used in reports """ - share: float + share: float = -1.0 assessment_type: str = 'WholeDatasetKnnDistance'