docstr: Synthetic dataset 1: w is roughly a unit vector, x_i's are standard normal
  (Y is in the range [-10, +10] with high probability)
code: def create(self, save_to_path):
      """
      Synthetic dataset 1: w is roughly a unit vector, x_i's are standard normal
      (Y is in the range [-10, +10] with high probability)
      """
      w = np.random.randn(self.d) / math.sqrt(self.d)
      X = np.random.randn(self.n, self.d) + self.d
      Y = X.dot(w) + self.sig * np.random.randn(self.n)
  
      min_file = open(save_to_path + self.name + ".min", "w")
      min_file.write(str(Y.min()))
      print("min_value = ", Y.min(), flush=True)
  
      max_file = open(save_to_path + self.name + ".max", "w")
      max_file.write(str(Y.max()))
      print("max_value = ", Y.max(), flush=True)
  
      self.save_vw_reg_dataset(X, Y, save_to_path)
      percent = 0.80
      ds = pd.read_csv(save_to_path + self.fname, header=None)
      ds_train = ds[0 : math.floor(ds.size * percent)]
      ds_test = ds[math.floor(ds.size * percent) :]
  
      ds.to_csv(
          save_to_path + self.name + ".dat", header=False, index=False
      )
      ds_train.to_csv(
          save_to_path + self.name + "_train.dat",
          header=False,
          index=False,
      )
      ds_test.to_csv(
          save_to_path + self.name + "_test.dat",
          header=False,
          index=False,
      )
  
file_path: vowpal_wabbit/demo/cats/utility/create_synthetic_data.py
imports: import numpy
  import math
  import gzip
  import os
  import pandas
  import math
  import sys
  import getopt
label_desc: Use image node_id 2 for calling the SyntheticData obj's underlying member method code with example usage: obj.create(save_to_path) without return types