code: def create_new_training(ratio: float) -> DataFrame:
      training_pdf = (
          create_data_factory().create_clustered_training_data(ratio)
      )
  
      return materialized_cache(
          spark.createDataFrame(training_pdf).withColumn(
              AccessAnomalyConfig.default_tenant_col,
              f.lit(0),
          ),
      )
  
imports: import os
  import tempfile
  import unittest
  from typing import Dict, Optional, Set, Type, Union
  from pandas.testing import assert_frame_equal
  from pyspark.sql import DataFrame, types, functions
  from synapse.ml.cyber.feature import indexers
  from synapse.ml.cyber import DataFactory
  from synapse.ml.cyber.anomaly.collaborative_filtering import AccessAnomaly, AccessAnomalyModel, AccessAnomalyConfig, ConnectedComponents, ModelNormalizeTransformer, _UserResourceFeatureVectorMapping
  from synapsemltest.cyber.explain_tester import ExplainTester
  from synapsemltest.spark import *
label_desc: Use image node_id 2 for calling the Dataset obj's underlying member method code with example usage: obj.create_new_training(ratio) and returns: materialized_cache