Beispiel #1
0
 def _get_param(self):
     from federatedml.protobuf.generated import pearson_model_param_pb2
     param_pb = pearson_model_param_pb2.PearsonModelParam()
     param_pb.party = f"({self._local_party.role},{self._local_party.party_id})"
     for shape, party in zip(self.shapes, self._parties):
         param_pb.shapes.append(shape)
         param_pb.parties.append(f"({party.role},{party.party_id})")
         _names = param_pb.all_names.add()
         if party == self._local_party:
             for name in self.names:
                 _names.names.append(name)
         else:
             for i in range(shape):
                 _names.names.append(f"{party.role}_{party.party_id}_{i}")
     param_pb.shape = self.local_corr.shape[0]
     for idx, name in enumerate(self.names):
         param_pb.names.append(name)
         anonymous = param_pb.anonymous_map.add()
         anonymous.name = name
         anonymous.anonymous = f"{self._local_party.role}_{self._local_party.party_id}_{idx}"
     for v in self.corr.reshape(-1):
         param_pb.corr.append(max(-1.0, min(float(v), 1.0)))
     for v in self.local_corr.reshape(-1):
         param_pb.local_corr.append(max(-1.0, min(float(v), 1.0)))
     return param_pb
Beispiel #2
0
    def _get_param(self):
        from federatedml.protobuf.generated import pearson_model_param_pb2

        param_pb = pearson_model_param_pb2.PearsonModelParam()

        # local
        param_pb.party = f"({self.local_party.role},{self.local_party.party_id})"
        param_pb.shape = self.local_corr.shape[0]
        for v in self.local_corr.reshape(-1):
            param_pb.local_corr.append(max(-1.0, min(float(v), 1.0)))
        for idx, name in enumerate(self.names):
            param_pb.names.append(name)
            anonymous = param_pb.anonymous_map.add()
            anonymous.name = name
            anonymous.anonymous = generate_anonymous(
                fid=idx,
                party_id=self.local_party.party_id,
                role=self.local_party.role)

        if self.model_param.calc_local_vif:
            for vif_value in self.local_vif:
                param_pb.local_vif.append(vif_value)

        # global
        for shape, party in zip(self.shapes, self.parties):
            param_pb.shapes.append(shape)
            param_pb.parties.append(f"({party.role},{party.party_id})")

            _names = param_pb.all_names.add()
            if party == self.local_party:
                for name in self.names:
                    _names.names.append(name)
            else:
                for i in range(shape):
                    _names.names.append(f"{party.role}_{party.party_id}_{i}")

        if self.model_param.cross_parties:
            for v in self.corr.reshape(-1):
                param_pb.corr.append(max(-1.0, min(float(v), 1.0)))

        param_pb.model_name = "HeteroPearson"

        return param_pb