Exemple #1
0
 def laplace(self, b):
     self.histogram = LaplaceMechanism(self.histogram, b)
Exemple #2
0
 def laplace(self, b):
     self.histogram = LaplaceMechanism(self.histogram, b)
Exemple #3
0
class Node:

    def __init__(self, start_id, size, parent_id, histogram, level = None):
        '''
        @summary: Node Constructor

        @param start_id: Root结点为0
        @param size: 项总数(包含&)
        @param parent_id: Root结点为-1
        @param histogram: 对应可能孩子结点计数
        @param level: 树层数, Root为1

        '''
        self.start_id = start_id
        self.histogram = histogram
       
        # 记录父结点 
        self.parent_id = parent_id
        self.childrens = np.array([None] * size)

        # 标记扰动计数为哪一种类型, 以决定 epsilon
        # True:  噪音计数
        # False: 预测计数, epsilon 有节省(由于最初始由噪音计数计算得来, 满足E-DP)
        self.noised = bitarray([True] * size)
        
        # 标记是否已发布 - children
        # bitarray 用以初始化 0/1
        self.released = bitarray([False] * size)
        self.size = size
        self.level = level
        self.left_level = None
        self.eps = None

    def laplace(self, b):
        self.histogram = LaplaceMechanism(self.histogram, b)

    def releaseAll(self):
        self.released = bitarray([True] * self.size)

    def hasReleasedItem(self):
        '''
        @summary: 判断Item是否存在发布  ???

        @return: True when any bit(存在) in "released" is True.
        @retype: boolean

        '''
        return self.released.any() 

    def areAllItemsReleased(self):
        '''
        @summary: 判断是否完全发布  ???

        @return: True when all bits in "released" are True.
        @rtype: boolean

        '''
        return self.released.all()

    def __repr__(self):
        '''
        @summary: 与反引号操作符(``)相同, 以字符串的方式获取对象的内容/类型/数值属性等信息

        @note 区别内建函数str(), 得到的字符串可读性好(被print调用)
            - x.__repr__ <=> repr(x)
            - eval(repr(object)) == object

        @ Return: the canonical string representation of the object
        @rtype: str
        '''
        return self.histogram.__repr__()

    def __len__(self):
        return len(self.histogram)
Exemple #4
0
class Node:
    def __init__(self, start_id, size, parent_id, histogram, level=None):
        '''
        @summary: Node Constructor

        @param start_id: Root结点为0
        @param size: 项总数(包含&)
        @param parent_id: Root结点为-1
        @param histogram: 对应可能孩子结点计数
        @param level: 树层数, Root为1

        '''
        self.start_id = start_id
        self.histogram = histogram

        # 记录父结点
        self.parent_id = parent_id
        self.childrens = np.array([None] * size)

        # 标记扰动计数为哪一种类型, 以决定 epsilon
        # True:  噪音计数
        # False: 预测计数, epsilon 有节省(由于最初始由噪音计数计算得来, 满足E-DP)
        self.noised = bitarray([True] * size)

        # 标记是否已发布 - children
        # bitarray 用以初始化 0/1
        self.released = bitarray([False] * size)
        self.size = size
        self.level = level
        self.left_level = None
        self.eps = None

    def laplace(self, b):
        self.histogram = LaplaceMechanism(self.histogram, b)

    def releaseAll(self):
        self.released = bitarray([True] * self.size)

    def hasReleasedItem(self):
        '''
        @summary: 判断Item是否存在发布  ???

        @return: True when any bit(存在) in "released" is True.
        @retype: boolean

        '''
        return self.released.any()

    def areAllItemsReleased(self):
        '''
        @summary: 判断是否完全发布  ???

        @return: True when all bits in "released" are True.
        @rtype: boolean

        '''
        return self.released.all()

    def __repr__(self):
        '''
        @summary: 与反引号操作符(``)相同, 以字符串的方式获取对象的内容/类型/数值属性等信息

        @note 区别内建函数str(), 得到的字符串可读性好(被print调用)
            - x.__repr__ <=> repr(x)
            - eval(repr(object)) == object

        @ Return: the canonical string representation of the object
        @rtype: str
        '''
        return self.histogram.__repr__()

    def __len__(self):
        return len(self.histogram)