← API Reference

elwood_spatial.features

Feature engineering utilities for ML-based outlier detection. Adds temporal, network, and neighbor-deviation features to a DataFrame for use with models like XGBoost.

coefficient_of_variation(values)

Compute the coefficient of variation as a percentage: CV = (std / mean) × 100.

ParameterTypeDescription
valuespd.Series | np.ndarrayNumeric values

Returns float. Returns NaN if mean is zero.

add_rolling_features(df, ...)

Add temporal rolling-window features per device.

ParameterTypeDefaultDescription
dfpd.DataFrameInput data
id_columnstr"id"Device ID column
time_columnstr"timestamp"Timestamp column
value_columnstr"value"Measurement column
windowslist[str]["3h", "6h"]Rolling window sizes

Adds columns per window: cv_{W}, range_{W}, std_{W}. Also adds delta, directionality, outage.

df = es.add_rolling_features(df, windows=["3h", "6h", "12h"])

add_network_features(df, network, bins, ...)

Add information-theoretic network features at each timestep.

ParameterTypeDefaultDescription
dfpd.DataFrameInput data
networkNetworkSpatial network
binsBinSpecBin specification
id_columnstr"id"Device ID column
time_columnstr"timestamp"Timestamp column
value_columnstr"value"Measurement column

Adds columns: network_entropy, information, bin_deviation, neighbor_count.

add_neighbor_deviation_features(df, network, feature_columns, ...)

For each feature column, add a column measuring deviation from the neighborhood mean.

ParameterTypeDefaultDescription
dfpd.DataFrameInput data (must have network features already)
networkNetworkSpatial network
feature_columnslist[str]Columns to compute deviations for
id_columnstr"id"Device ID column
time_columnstr"timestamp"Timestamp column

For each column col, adds {col}_neighbor_dev.