class_docstr: Generates Glussian clusters for binary classes
class_docstr_tok: ["Generates","Glussian","clusters","for","binary","classes"]
docstr: Generates Glussian clusters for binary classes
  
  Args:
      n_samples (int): number of samples
      n_features (int): number of features
  
  Returns: torch tensors with inputs and labels
docstr_tok: ["Generates","Glussian","clusters","for","binary","classes","Args",":","n_samples","(","int",")",":","number","of","samples","n_features","(","int",")",":","number","of","features","Returns",":","torch","tensors","with","inputs","and","labels"]
code: def generate_data(n_samples, n_features):
      """Generates Glussian clusters for binary classes
  
      Args:
          n_samples (int): number of samples
          n_features (int): number of features
  
      Returns: torch tensors with inputs and labels
      """
      x, y = make_classification(
          n_samples=n_samples,
          n_features=n_features,
          # by default, 2 features are redundant
          n_informative=n_features - 2,
          n_classes=2,
      )
      x = torch.tensor(x).float()
      y = torch.tensor(y).float().unsqueeze(-1)
  
      return train_test_split(x, y)
  
file_path: CrypTen/benchmarks/data.py
imports: import os
  from pathlib import Path
  import crypten
  import PIL
  import torch
  import torch.nn.functional
  from sklearn.datasets import make_classification
  from sklearn.model_selection import train_test_split
  from torchvision import transforms
label_desc: Use image node_id 2 for calling the GaussianClusters obj's underlying member method code with example usage: obj.generate_data(n_samples, n_features) and returns: train_test_split