docs: def record_set(self, train, labels=None, channel="train"):
          """Build a :class:`~RecordSet` from a numpy :class:`~ndarray` matrix and label vector.
  
          For the 2D ``ndarray`` ``train``, each row is converted to a :class:`~Record` object.
          The vector is stored in the "values" entry of the ``features`` property of each Record.
          If ``labels`` is not None, each corresponding label is assigned to the "values" entry
          of the ``labels`` property of each Record.
  
          The collection of ``Record`` objects are protobuf serialized and uploaded to new
          S3 locations. A manifest file is generated containing the list of objects created and
          also stored in S3.
  
          The number of S3 objects created is controlled by the ``train_instance_count`` property
          on this Estimator. One S3 object is created per training instance.
  
          Args:
              train (numpy.ndarray): A 2D numpy array of training data.
              labels (numpy.ndarray): A 1D numpy array of labels. Its length must be equal to the
                 number of rows in ``train``.
              channel (str): The SageMaker TrainingJob channel this RecordSet should be assigned to.
          Returns:
              RecordSet: A RecordSet referencing the encoded, uploading training and label data.
          """
          s3 = self.sagemaker_session.boto_session.resource('s3')
          parsed_s3_url = urlparse(self.data_location)
          bucket, key_prefix = parsed_s3_url.netloc, parsed_s3_url.path
          key_prefix = key_prefix + '{}-{}/'.format(type(self).__name__, sagemaker_timestamp())
          key_prefix = key_prefix.lstrip('/')
          logger.debug('Uploading to bucket {} and key_prefix {}'.format(bucket, key_prefix))
          manifest_s3_file = upload_numpy_to_s3_shards(self.train_instance_count, s3, bucket, key_prefix, train, labels)
          logger.debug("Created manifest file {}".format(manifest_s3_file))
          return RecordSet(manifest_s3_file, num_records=train.shape[0], feature_dim=train.shape[1], channel=channel)