An unsupervised approach

Here is an unsupervised approach that takes into account the significant local variance changes, which tend to coincide with the boundaries of intervals.

Core components

signal = df[‘y’].ffill().bfill()

window_size = 300
variance = signal.rolling(window_size).var().values

variance_th = 500
jump_indices_raw = np.where(variance > variance_th)[0]

1 Like

Thanks for sharing.

I also added magic features. Very simple method to detect start signals for 5 time series in the test set :slight_smile:

1 Like

For instance, all start signals of the series “ceeng” have value “y” of 2326 :slight_smile: