Views
No views yet
healthy, outage, weather, snow, snow_shedding,
cloud_intermittent, clipping, curtailment, thermal.HistGradientBoostingClassifier distilled
from a rules-plus-referee pipeline over 32 public PVDAQ systems and one
SolarNetwork node. It was built to generalize to plants it has never
seen: every feature is a ratio or a fraction of plant capacity, and
missing values (no temperature sensor, short history, no weather feed)
are tolerated as NaN. It runs day-level, per site, on a single meter
stream — sub-metering is not required at inference time.model.joblib is a self-describing bundle (a plain dict), pickled with
joblib under scikit-learn 1.9.0 / Python 3.11:1import joblib
2
3bundle = joblib.load("model.joblib")
4model = bundle["model"] # HistGradientBoostingClassifier
5features = bundle["features"] # ordered list of 24 column names
6classes = bundle["classes"] # the 9 labels
7# bundle["trained_at"] = "2026-08-01T03:44:37+00:00"
8# bundle["version"] = "20260801T034437Z"
9
10X = day_frame[features] # one row per day; NaN allowed
11labels = model.predict(X)
12proba = model.predict_proba(X)hoodsy/sn-triage-dataset.
The 24 features, in bundle order: pi_rel, csr, model_csr, chop,
plateau_run_h, peak_frac, expected_peak_frac, dead_run_h,
morning_ratio, midday_ratio, tmax_c, temp_corr, snow_3d,
snow_7d, snow_30d, pi_slope_14d, pi_drop_share, unit_count,
unit_dist, doy_sin, doy_cos, pi, coverage, rain_mm.data_gap and
unclassified days excluded) across 33 sites, of which 6,141 are
gold: days graded against per-inverter data by a fleet-relative
referee. Sample weights = class balance × 5 for gold.20260801T034437Z) also runs at the edge as a
SolarQuant plugin (Ecosuite's spec: a container on the plant's
SolarNode ingests live datums, closes each local day, computes the same
24 features — Open-Meteo weather when available, clear-sky fallback —
and posts a daily fault-class datum). Replaying a 7-month window of the
SolarNetwork training node through the containerized plugin at
production streaming cadence reproduced the batch pipeline's final
labels on 92.4% of 211 days, including 88/88 outage days (a real
77-day outage) and 44/44 weather days. The residual is the plugin's
online trailing-median baseline vs the batch two-pass baseline on
marginal healthy/weather days, plus days the batch left unclassified
(a label this model deliberately does not have — it predicts over them).Deline, C., Perry, K., Deceglie, M., Muller, M., Sekulic, W., & Jordan, D. (2021). Photovoltaic Data Acquisition (PVDAQ) Public Datasets [Data set]. Open Energy Data Initiative (OEDI). NREL. https://doi.org/10.25984/1846021