CoolFace
Datasetpublic

kadireks/2026-24679-tabular-dataset

24-679 (Fall 2026): Everyday Object Measurements kadireks/2026-24679-tabular-dataset Hand-measured everyday objects from one household, plus explicitly marked synthetic training variants. The classroom classification task predicts an object's category from three ruler measurements and two categorical properties. The object's own name is stored as source context and is excluded from this task's predictors. Source and task The preparation notebook reads objects.csv… See the full description on the dataset page: https://huggingface.co/datasets/kadireks/2026-24679-tabular-dataset.

sourceHugging Faceupdated 9d agoView on Hugging Face
0likes41downloads
Dataset Card

24-679 (Fall 2026): Everyday Object Measurements

kadireks/2026-24679-tabular-dataset

Hand-measured everyday objects from one household, plus explicitly marked synthetic training variants. The classroom classification task predicts an object's category from three ruler measurements and two categorical properties. The object's own name is stored as source context and is excluded from this task's predictors.

Source and task

The preparation notebook reads objects.csv, assigns source IDs in retained row order, and checks the selected fields. Original rows are direct measurements I took of objects on my own desk and in my own home: each dimension read off a ruler to the nearest millimetre, with the material recorded as the dominant material by volume rather than by surface. Every measurement must be a finite, positive integer number of millimetres, and every material, colour, and category must be one of the values observed during collection. These checks establish valid domains, not that a reading was taken accurately.

The target is the object's category. Six categories were defined before collection; five were actually observed, because nothing in the thirty objects was labelled writing. That absence is a property of this sample, not of the label vocabulary.

Preparation source: 24-679 Tabular Data notebook. Course: 24-679, Fall 2026, Carnegie Mellon University. Repository maintainer: the account shown above.

Fields

Stored field / groupMeaning and modeling role
categoryCategorical classification target: one of the five observed classes.
length_mm, width_mm, height_mmPositive integer millimetre predictors, treated as three independent measurements. Recorded in each object's natural orientation, so height_mm is standing height for a tall object rather than the smallest dimension.
materialNominal survey-style predictor; dominant material by volume. Its labels carry no numeric distance.
colorNominal predictor; dominant visible colour. Its labels carry no numeric distance.
object_nameRetained source context; exclude from the five-feature tabular task. The name states the category — "Mouse", "Keyboard", "Glue" — so using it as a predictor hands a model the answer. Synthetic rows copy this text from their primary parent.
source_id, parent_id, second_parent_idUnique example key and original source keys; provenance only. CTGAN rows carry the __ctgan_model__ sentinel instead of a parent row.
augmentation, is_augmented, mix_weightMethod, synthetic flag, and primary-parent weight; exclude from predictors. mix_weight is absent for model samples.
partitionModelling role of the row's original source: train, validation, or test.

Two column groups present at collection were dropped before modelling. is_electronic is close to a copy of the electronics target class — ten rows flagged true against nine rows labelled electronics — so a model given it receives nearly a third of the dataset for free. And max_dim_mm / mid_dim_mm / min_dim_mm were a deterministic reordering of the three measurements; once those three are perturbed independently, the derived triple contradicts them while every value still looks like a plausible millimetre reading.

The machine-readable feature metadata at the top of this card preserves every exact column name and storage type.

Splits and original-source counts

These counts are computed from the packaged splits for this run.

SplitOriginal rowsSynthetic rowsTotal rows
train21308329
validation404
test505

Requested holdout fraction: 30%; test receives 50% of that holdout. Small-sample rounding changes the realized proportions. The first split uses seed 24679, and the holdout split uses seed 24680.

Split original rows before augmentation, then retain both holdouts unchanged. Both parents of every SMOTE-NC and Mixup row must come from the original training partition.

The first split is stratified by category; the holdout split is not, and could not be. Thirty rows across five classes leave the holdout with classes that have a single member, and a stratified split requires at least two. The consequence is visible in the table above and should be read before any per-class number is quoted: at least one class is absent from validation and at least one is absent from test, so per-class precision and recall are undefined for those classes in those partitions.

IDs are assigned from row order; changing or reordering the source CSV can change regenerated IDs and splits. Keep these prepared boundaries fixed for downstream model comparisons.

Augmentation and preprocessing

This run targets a 15x training pool: one original plus 14 synthetic rows per original training row. The planned allocation of copies per method and original training row, before filtering, is additivenumericjitter 3, multiplicativenumericscale 3, smotenc 3, withinclassmixup 3, ctgansynthesis 2.

Every row-level draw starts from an original training row. Unchanged rows and repeated feature/target combinations for a given primary parent are removed.

  • —Additive numeric jitter: perturb the three measurements with Gaussian noise. Each standard deviation is max(5% of that training column's IQR, 1 mm); clip at 1 mm and round to integers.
  • —Multiplicative numeric scaling: independently multiply each measurement by a factor in 0.90–1.10, then clip and round to positive integers.
  • —SMOTE-NC: select a same-class neighbour and interpolate the three measurements towards it. Distance follows the published mixed-type rule: Euclidean on millimetres plus, for each categorical mismatch, a penalty equal to the median standard deviation of the continuous features in that class — without it, millimetres would decide every neighbour and material would never matter. Categories take the modal value among the seed row's neighbours. k adapts to class size and falls to 2 for the smallest classes, which hold three training rows each.
  • —Within-class Mixup: interpolate the measurements between two same-class parents using a Beta(0.4, 0.4) weight; take each category whole from whichever parent dominates; record both parents and the exact weight.
  • —CTGAN synthesis: sample a conditional GAN fitted to the joint distribution of the five features and the target. Unseen categories are rejected and measurements are clipped to the observed training range.

All four row-level methods inherit the target unchanged. Mixup and SMOTE-NC are restricted to same-class pairs, so the target matches both parents. Original and single-parent rows repeat the primary key in second_parent_id and use mix_weight=1.0.

Because deduplication removes rows, and because CTGAN can contribute nothing at all if its library is unavailable or training fails, the generator requests further additive-jitter copies with fresh seeds until the multiplier target is met. This run used 3 such top-up copies beyond the planned allocation, and the summary table below counts them within the additive-jitter method.

Training methodStored rows
additive_numeric_jitter126
multiplicative_numeric_scale63
none21
smote_nc63
within_class_mixup56

Intended use and limitations

Use for teaching mixed-type data contracts, provenance, augmentation, and small-sample classification. Compare original-only and augmented training against the same validation and test sets. Report macro-averaged F1 alongside overall accuracy and a majority-class baseline: with five uneven classes, accuracy alone can hide complete failure on a small class, and several classes are represented by one or two holdout rows.

Thirty objects from one home is not a sample of objects in general. Every measurement, material judgement, and category call is one person's, taken with one ruler, so there is no inter-annotator agreement figure to report. Category boundaries are softer than they look: a hand calculator was labelled tool and a clock electronics, and either could reasonably have gone elsewhere. The other class is a residual holding seven dissimilar objects rather than a coherent kind.

A domain-valid synthetic row may still describe an implausible object. Jitter and scaling assume that a few millimetres of measurement error leaves the category unchanged. SMOTE-NC and Mixup assume the space between two same-class objects is itself occupied by that class — averaging a 400 mm keyboard with a 135 mm mouse yields something that is neither. CTGAN, fitted here to roughly twenty training rows, cannot learn a joint distribution from that many examples and should be read as a noisy replay of its training set rather than as new objects.

More rows do not add independent objects or establish better generalization. Do not use this classroom sample for consequential decisions.

Privacy and licensing

The objects are ordinary household items, photographed by nobody and described only by dimension, material, and colour, so no personal data is stored. Object names are generic nouns rather than identifying details. Source IDs do not establish anonymity, and the raw CSV remains a separate source artifact. No license was specified in repository metadata when this card was first added; this card does not assign one.

Load and compare

python
from datasets import load_dataset
ds = load_dataset("kadireks/2026-24679-tabular-dataset")
# Train with ds["train"], choose settings with ds["validation"], then score ds["test"].

Use an account with access if repository visibility changes. For reproducible comparisons, record the dataset commit and model/environment versions. Regenerate this card with the preparation notebook after changing the data; its counts are calculated from the actual packaged splits. The YAML schema and split configuration are preserved from the upload.