Downloads · 30 days
0
axlesubash/wisdm-watch-stat-xgb
wisdm-watch-stat-xgb is a tabular classification model from axlesubash. Use it for the tabular classification task on the model card, and read the license before you ship it in a product. It is set up for onnx. The card lists the license as mit.
CPU classifier for one 5 s, 20 Hz smartwatch IMU window (T=100, C=6) into 18 WISDM activities. The ONNX file is the XGBoost tree head only. Statistical features (104 dims) still run in Python in notsubash/Activity-Rec…
Downloads · 30 days
0
Access
Public
Updated Aug 23, 2026
Repo size
7.9 MB
Likes
0
Public
Click a slice to open those files.
.onnx7.9 MB · 100%
From the Hugging Face model README
CPU classifier for one 5 s, 20 Hz smartwatch IMU window (T=100, C=6) into 18 WISDM activities. The ONNX file is the XGBoost tree head only. Statistical features (104 dims) still run in Python in notsubash/Activity-Recognition.
Not a medical or safety device. Watch windows only. Do not send phone IMU to this bundle.
Protocol B, 5-fold GroupKFold on subject_id, 51 subjects, repaired 20 Hz WISDM (UCI 507). Source: docs/reports/protocol_b_watch_stat_xgb.json.
| Metric | Value |
|---|---|
| macro-F1 | 0.7031 |
| accuracy | 0.7013 |
| mean fold macro-F1 | 0.7027 (std 0.0506) |
| locomotion group F1 | 0.9292 |
| posture group F1 | 0.6606 |
| hand group F1 | 0.8788 |
| eating group F1 | 0.8450 |
Primary metric is macro-F1. The ONNX in this repo is a refit on all windows (one subject held out only for XGBoost early stopping). It is not a GroupKFold fold. Cite the table above, not an export-fit score.
Weak watch class: eating sandwich (L), per-class F1 0.2816. Stairs 0.7028, kicking 0.7831.
| File | Role |
|---|---|
watch_stat_xgb.onnx | XGBoost classifier (onnxmltools / ONNX 1.22, input [None, 104]) |
watch_stat_xgb.json | Sidecar (har.onnx.v1): window contract, device, classes |
LICENSE | MIT |
Config used to train: configs/protocol_b_watch_stat_xgb.yaml (200 trees, max_depth 6, statistical features, 5.0 s window, 1.0 s hop).
Install the package from GitHub, then download this repo so the .onnx and .json sit together:
from pathlib import Path
import numpy as np
from huggingface_hub import snapshot_download
from har.models.export import load_bundle, predict_window
local = snapshot_download("axlesubash/wisdm-watch-stat-xgb")
bundle = load_bundle(Path(local) / "watch_stat_xgb.onnx")
# 100 rows, channels ax, ay, az, gx, gy, gz
window = np.zeros((100, 6), dtype=np.float32)
print(predict_window(bundle, window))
Input contract:
device: watchhz: 20(100, 6)ax, ay, az, gx, gy, gzPhone windows are out of contract. This is not transformers.AutoModel.
WISDM Smartphone and Smartwatch Activity and Biometrics Dataset (UCI 507): 51 subjects (1600-1650), 18 activities (A-S skipping N), watch on the dominant hand, accelerometer and gyroscope. Sessions are repaired onto a shared 20 Hz grid. There are no demographics, so there is no fairness slice. Raw WISDM is not redistributed here.
onnxruntime runs the tree head only.WISDM (Weiss et al., UCI 507). Training code and protocol: notsubash/Activity-Recognition. Weights in this Hub repo are MIT. The dataset has its own UCI terms.