Source code for synthetic_aia_mia.aia.rf

"""MIA using a random forest."""

import numpy as np
import pandas as pd
from sklearn.model_selection import StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from functools import partial
import tempfile
import os

from ..fetch_data import Dataset

[docs] class AiaRF: """Wrapper arround sklearn random forest""" def __init__(self): self.trained = False
[docs] def fit(self, dadata, attrib): """Train a random forest. :parameter data: Dataset the will be used for training. Dataset must contain columns called "loss" used as features and "member" used as labels. :type dadata: fetch_data.Dataset """ data = dadata.load()[["soft0", "soft1",attrib]] x = data[["soft0", "soft1"]].to_numpy() self.model = RandomForestClassifier() self.model.fit(x,data[attrib].to_numpy()) self.trained = True self.attrib = attrib
[docs] def predict(self, dadata): """Use a trained TabularNN to predict label of dataset. :param dadata: Dataset to evaluate. :type dadata: fetch_data.Dataset :return: Input dataset completed with mia result as a column called "mia". :rtype: fetch_data.Dataset """ if not(self.trained): raise AssertionError(f"{self} must be trained prioir to predict") data = dadata.load() yhard = self.model.predict(data[["soft0", "soft1"]].to_numpy()) data[f"{self.attrib}_soft"] = yhard dadata.update(data) return dadata