CoolFace
Datasetpublic

CSE472-blanket-challenge/phase1-dataset

Phase 1 Dataset Data Card Field Type Description data_id string Unique identifier (hash of graph_id + target + scm_type) graph_id string Source graph identifier X List[List[float]] Feature matrix (n_samples × n_features) y List[float] Target variable values (n_samples,) adjacency_matrix List[List[int]] NxN binary matrix where N = (n_feature + 1), A[i,j]=1 means i→j (target as last node) feature_mask List[int] Binary mask for Markov blanket… See the full description on the dataset page: https://huggingface.co/datasets/CSE472-blanket-challenge/phase1-dataset.

sourceHugging Faceupdated 11mo agoView on Hugging Face
0likes59downloads
Dataset Card

Phase 1 Dataset

Data Card

FieldTypeDescription
data_idstringUnique identifier (hash of graphid + target + scmtype)
graph_idstringSource graph identifier
XList[List[float]]Feature matrix (nsamples × nfeatures)
yList[float]Target variable values (n_samples,)
adjacency_matrixList[List[int]]NxN binary matrix where N = (n_feature + 1), A[i,j]=1 means i→j (target as last node)
feature_maskList[int]Binary mask for Markov blanket features (n_features,)
fs_methodstringmethod used to generate feature_mask
num_nodesintNumber of variables in original graph
num_edgesintNumber of edges in DAG
densityfloatActual density (edges / maxpossibleedges)
graph_generation_methodstringGraph generation method (e.g., "PA", "ER")

Dataset Generation Settings

  • —Graphs: See Graph Dataset
  • —Target Selection: Random node selection
  • —Data Generation: Linear or Nonlinear Gaussian SCM
  • —Linear: $Xi = \sumj(\beta{ij} \cdot Xj) + \epsilon_i$
  • —Nonlinear: $Xi = f(\sumj(\beta{ij} \cdot Xj)) + \epsilon_i$
  • —Coefficients $\beta_{ij}$ sampled from [-2, 2]
  • —Nonlinear functions: $x^2$, $\sin(x)$, $\cos(x)$, $\tanh(x)$, $x|x|$, $e^{-x^2}$
  • —Gaussian noise: $\epsilon_i \sim N(0, 0.5^2)$

Quick Start

Load Dataset

python
from datasets import load_dataset
import numpy as np

# Load dataset
linear_dataset = load_dataset("CSE472-blanket-challenge/phase1-dataset", split="train") # linear by default
nonlinear_dataset = load_dataset("CSE472-blanket-challenge/phase1-dataset", name="nonlinear", split="train")

record = linear_dataset[0]

print(f"X shape: {len(record['X'])} x {len(record['X'][0])}")  # n_samples x n_features
print(f"y shape: {len(record['y'])}")  # n_samples
print(f"Nodes: {record['num_nodes']}")
print(f"Graph density: {record['density']}")

Convert Adjacency Matrix to Graph

python
import networkx as nx
import numpy as np

# Get reordered adjacency matrix (target as last node)
adj_matrix = np.asarray(record["adjacency_matrix"])

# Create directed graph
dag = nx.from_numpy_array(adj_matrix, create_using=nx.DiGraph)

print(f"Nodes: {dag.number_of_nodes()}")
print(f"Edges: {dag.number_of_edges()}")
print(f"Is DAG: {nx.is_directed_acyclic_graph(dag)}")

Extract Features and Markov Blanket

python
# Get feature matrix and target
X = np.asarray(record["X"])  # (n_samples, n_features)
y = np.asarray(record["y"])  # (n_samples,)

# Get Markov blanket indices for features
mb_mask = np.asarray(record["markov_blanket"])
mb_indices = np.where(mb_mask == 1)[0]

print(f"Feature matrix shape: {X.shape}")
print(f"Target vector shape: {y.shape}")
print(f"Markov blanket features: {mb_indices}")
print(f"Total features in MB: {mb_mask.sum()}/{len(mb_mask)}")