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.
059
Phase 1 Dataset
Data Card
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
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
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
# 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)}")