code: def __init__(
      self,
      num_hr_users: int = 7,
      num_hr_resources: int = 30,
      num_fin_users: int = 5,
      num_fin_resources: int = 25,
      num_eng_users: int = 10,
      num_eng_resources: int = 50,
      single_component: bool = True,
  ):
      self.hr_users = ["hr_user_" + str(i) for i in range(num_hr_users)]
      self.hr_resources = [
          "hr_res_" + str(i) for i in range(num_hr_resources)
      ]
  
      self.fin_users = [
          "fin_user_" + str(i) for i in range(num_fin_users)
      ]
      self.fin_resources = [
          "fin_res_" + str(i) for i in range(num_fin_resources)
      ]
  
      self.eng_users = [
          "eng_user_" + str(i) for i in range(num_eng_users)
      ]
      self.eng_resources = [
          "eng_res_" + str(i) for i in range(num_eng_resources)
      ]
  
      if single_component:
          self.join_resources = ["ffa"]
      else:
          self.join_resources = []
  
      self.rand = random.Random(42)
  
file_path: SynapseML/core/src/main/python/synapse/ml/cyber/dataset.py
imports: from typing import List, Set, Optional, Tuple
  import pandas
  import random
  from synapse.ml.cyber.anomaly.collaborative_filtering import AccessAnomalyConfig
label_desc: Use image node_id 1 to create a new DataFactory object  with example: obj = DataFactory(num_hr_users, num_hr_resources, num_fin_users, num_fin_resources, num_eng_users, num_eng_resources, single_component)