Streaming Feature Extraction#
This notebook demonstrates how to use the interpreTS
library for feature extraction in a streaming context. We’ll process time series data as it arrives in real-time.
Step 1: Import Libraries#
[ ]:
from interpreTS.core.feature_extractor import FeatureExtractor, Features
import random
import time
from datetime import datetime, timedelta
Step 2: Define a Data Stream Generator#
We’ll simulate a time series data stream where new data points are generated every 30 seconds.
[2]:
def generate_stream():
current_time = datetime.now()
for i in range(200): # Generate 200 data points
yield {
'id': 'series_1', # Identifier for the time series
'time': current_time + timedelta(seconds=30 * i), # Timestamp
'value': random.random() # Randomly generated value
}
time.sleep(0.01)
Step 3: Initialize the FeatureExtractor for Streaming#
We’ll set up the FeatureExtractor
to calculate the mean and variance from the value
column using a window size of 5 data points. The id_column
specifies the unique identifier for the time series.
[3]:
feature_extractor_stream = FeatureExtractor(
features=[Features.MEAN, Features.VARIANCE], # Features to extract
feature_column="value", # Data column from which to extract features
window_size=5, # Number of points per window
id_column="id" # Group by the 'id' column
)
Step 4: Extract Features in a Streaming Context#
Using the extract_features_stream
method, we’ll process the data stream and print the extracted features for each window of 5 data points.
[4]:
for features in feature_extractor_stream.extract_features_stream(generate_stream()):
print(features)
{'mean_value': 0.5302559014050979, 'variance_value': 0.05253585541039717, 'id': 'series_1'}
{'mean_value': 0.5763003255145184, 'variance_value': 0.056443627047807934, 'id': 'series_1'}
{'mean_value': 0.5002972150764308, 'variance_value': 0.0263593570015553, 'id': 'series_1'}
{'mean_value': 0.5603844489807113, 'variance_value': 0.012360516245759023, 'id': 'series_1'}
{'mean_value': 0.5715475273281434, 'variance_value': 0.008600746357379363, 'id': 'series_1'}
{'mean_value': 0.5941913312223666, 'variance_value': 0.01244589462280257, 'id': 'series_1'}
{'mean_value': 0.5599190670382057, 'variance_value': 0.009149717681769174, 'id': 'series_1'}
{'mean_value': 0.6225206242724437, 'variance_value': 0.02310858422510515, 'id': 'series_1'}
{'mean_value': 0.674171340523812, 'variance_value': 0.02774186833184048, 'id': 'series_1'}
{'mean_value': 0.7055771874159391, 'variance_value': 0.016065929277289052, 'id': 'series_1'}
{'mean_value': 0.6704200527203796, 'variance_value': 0.019687636663485837, 'id': 'series_1'}
{'mean_value': 0.7370312361537542, 'variance_value': 0.019989380605827743, 'id': 'series_1'}
{'mean_value': 0.7614573392521315, 'variance_value': 0.028344792272259202, 'id': 'series_1'}
{'mean_value': 0.7462062104469848, 'variance_value': 0.027418583408698387, 'id': 'series_1'}
{'mean_value': 0.683236658692616, 'variance_value': 0.0638961414415679, 'id': 'series_1'}
{'mean_value': 0.7533965696049488, 'variance_value': 0.06469337066438814, 'id': 'series_1'}
{'mean_value': 0.6009304314789746, 'variance_value': 0.12135292176383225, 'id': 'series_1'}
{'mean_value': 0.45481097398317605, 'variance_value': 0.09558484935286735, 'id': 'series_1'}
{'mean_value': 0.49383207269379853, 'variance_value': 0.12440586660297606, 'id': 'series_1'}
{'mean_value': 0.6402472662930938, 'variance_value': 0.14392343772065924, 'id': 'series_1'}
{'mean_value': 0.500639736837788, 'variance_value': 0.14952572549053306, 'id': 'series_1'}
{'mean_value': 0.6395972139230727, 'variance_value': 0.11825003650162931, 'id': 'series_1'}
{'mean_value': 0.7020031645584106, 'variance_value': 0.08529487994254997, 'id': 'series_1'}
{'mean_value': 0.5351198405420222, 'variance_value': 0.11686757276580009, 'id': 'series_1'}
{'mean_value': 0.34296792903953705, 'variance_value': 0.0860058836031357, 'id': 'series_1'}
{'mean_value': 0.4551534197304643, 'variance_value': 0.10457556910624252, 'id': 'series_1'}
{'mean_value': 0.3273042730208836, 'variance_value': 0.08050833819288028, 'id': 'series_1'}
{'mean_value': 0.3309938742453727, 'variance_value': 0.08230038798771211, 'id': 'series_1'}
{'mean_value': 0.44697101901178493, 'variance_value': 0.08409072663381771, 'id': 'series_1'}
{'mean_value': 0.5967782821074181, 'variance_value': 0.051616424145450646, 'id': 'series_1'}
{'mean_value': 0.6374646332557311, 'variance_value': 0.07170589046907584, 'id': 'series_1'}
{'mean_value': 0.703534238312746, 'variance_value': 0.02683195723941485, 'id': 'series_1'}
{'mean_value': 0.7458944204102318, 'variance_value': 0.023647371512954124, 'id': 'series_1'}
{'mean_value': 0.6526149675845637, 'variance_value': 0.06950532653203104, 'id': 'series_1'}
{'mean_value': 0.6232617713365499, 'variance_value': 0.06500345585389512, 'id': 'series_1'}
{'mean_value': 0.5060678553777406, 'variance_value': 0.03967319439455708, 'id': 'series_1'}
{'mean_value': 0.5501643895715762, 'variance_value': 0.046570136385489694, 'id': 'series_1'}
{'mean_value': 0.444881200053695, 'variance_value': 0.039769971232088724, 'id': 'series_1'}
{'mean_value': 0.468731190991121, 'variance_value': 0.031330190390015965, 'id': 'series_1'}
{'mean_value': 0.4208258800721806, 'variance_value': 0.02398170046491189, 'id': 'series_1'}
{'mean_value': 0.5205838982711584, 'variance_value': 0.055593030297842946, 'id': 'series_1'}
{'mean_value': 0.5742968175596824, 'variance_value': 0.08818626234312965, 'id': 'series_1'}
{'mean_value': 0.6634698689863772, 'variance_value': 0.0651187535947912, 'id': 'series_1'}
{'mean_value': 0.779787223325241, 'variance_value': 0.04387021021506346, 'id': 'series_1'}
{'mean_value': 0.8298824416680489, 'variance_value': 0.016028945320975412, 'id': 'series_1'}
{'mean_value': 0.7828329964264761, 'variance_value': 0.02030492614904039, 'id': 'series_1'}
{'mean_value': 0.6027299190753385, 'variance_value': 0.07718663958008352, 'id': 'series_1'}
{'mean_value': 0.641603534269809, 'variance_value': 0.09176362549733012, 'id': 'series_1'}
{'mean_value': 0.4955262829515929, 'variance_value': 0.09546661616299199, 'id': 'series_1'}
{'mean_value': 0.368850875762749, 'variance_value': 0.11996251758527418, 'id': 'series_1'}
{'mean_value': 0.2694663983647871, 'variance_value': 0.1049210897459382, 'id': 'series_1'}
{'mean_value': 0.31820075648063845, 'variance_value': 0.09640346946379366, 'id': 'series_1'}
{'mean_value': 0.22837527257700785, 'variance_value': 0.02292782815967412, 'id': 'series_1'}
{'mean_value': 0.19030450745295344, 'variance_value': 0.031594241214092, 'id': 'series_1'}
{'mean_value': 0.38441092445655783, 'variance_value': 0.11572800303407331, 'id': 'series_1'}
{'mean_value': 0.430084791301055, 'variance_value': 0.1023279460080776, 'id': 'series_1'}
{'mean_value': 0.4424055332211494, 'variance_value': 0.10042655780917331, 'id': 'series_1'}
{'mean_value': 0.39133140026591423, 'variance_value': 0.10929695241195758, 'id': 'series_1'}
{'mean_value': 0.46234855927633695, 'variance_value': 0.07393695557828422, 'id': 'series_1'}
{'mean_value': 0.2703644074173107, 'variance_value': 0.01901888772730344, 'id': 'series_1'}
{'mean_value': 0.3840244221082499, 'variance_value': 0.09441987827434484, 'id': 'series_1'}
{'mean_value': 0.49870864567455386, 'variance_value': 0.14837397954909967, 'id': 'series_1'}
{'mean_value': 0.6369013545840616, 'variance_value': 0.1428522081640965, 'id': 'series_1'}
{'mean_value': 0.581405141303277, 'variance_value': 0.18641282863668268, 'id': 'series_1'}
{'mean_value': 0.7333736130883395, 'variance_value': 0.11102294554151244, 'id': 'series_1'}
{'mean_value': 0.6238957163532353, 'variance_value': 0.11305696432439796, 'id': 'series_1'}
{'mean_value': 0.5739828018482757, 'variance_value': 0.08914024225132963, 'id': 'series_1'}
{'mean_value': 0.4488693323725254, 'variance_value': 0.07184993301425033, 'id': 'series_1'}
{'mean_value': 0.5575254911716608, 'variance_value': 0.038468783520005184, 'id': 'series_1'}
{'mean_value': 0.46783694851672014, 'variance_value': 0.029075972646970323, 'id': 'series_1'}
{'mean_value': 0.525199383638262, 'variance_value': 0.033956163549422394, 'id': 'series_1'}
{'mean_value': 0.5109159880164569, 'variance_value': 0.029386182396046213, 'id': 'series_1'}
{'mean_value': 0.6500427090761807, 'variance_value': 0.03914685678116329, 'id': 'series_1'}
{'mean_value': 0.544972566938711, 'variance_value': 0.08936077804185057, 'id': 'series_1'}
{'mean_value': 0.6274506750063292, 'variance_value': 0.0828956500664191, 'id': 'series_1'}
{'mean_value': 0.503479809610512, 'variance_value': 0.13073103318199236, 'id': 'series_1'}
{'mean_value': 0.44488568854709076, 'variance_value': 0.12819315182523575, 'id': 'series_1'}
{'mean_value': 0.3596759556169379, 'variance_value': 0.0688753579766767, 'id': 'series_1'}
{'mean_value': 0.526050670422887, 'variance_value': 0.09181892102875476, 'id': 'series_1'}
{'mean_value': 0.5066798078590531, 'variance_value': 0.08451914700272774, 'id': 'series_1'}
{'mean_value': 0.5030521569125957, 'variance_value': 0.08779366042547107, 'id': 'series_1'}
{'mean_value': 0.53011040507228, 'variance_value': 0.08240464427447083, 'id': 'series_1'}
{'mean_value': 0.504178720886453, 'variance_value': 0.0847202361596338, 'id': 'series_1'}
{'mean_value': 0.41726869681352136, 'variance_value': 0.04130819187895434, 'id': 'series_1'}
{'mean_value': 0.4620312310542185, 'variance_value': 0.0707275578505622, 'id': 'series_1'}
{'mean_value': 0.4913229140626121, 'variance_value': 0.04969741943116243, 'id': 'series_1'}
{'mean_value': 0.4206400924972156, 'variance_value': 0.07062567264619532, 'id': 'series_1'}
{'mean_value': 0.3900075901119348, 'variance_value': 0.07517384396045193, 'id': 'series_1'}
{'mean_value': 0.3154284673198447, 'variance_value': 0.0820298108083234, 'id': 'series_1'}
{'mean_value': 0.21740023094586114, 'variance_value': 0.009746276176272089, 'id': 'series_1'}
{'mean_value': 0.18874103782700385, 'variance_value': 0.014549001959580888, 'id': 'series_1'}
{'mean_value': 0.3191959027995228, 'variance_value': 0.06761796848212089, 'id': 'series_1'}
{'mean_value': 0.3807548864649314, 'variance_value': 0.07481137926518762, 'id': 'series_1'}
{'mean_value': 0.4245345144349236, 'variance_value': 0.05967327766592021, 'id': 'series_1'}
{'mean_value': 0.4219315460424805, 'variance_value': 0.05988000217484864, 'id': 'series_1'}
{'mean_value': 0.4974505599821528, 'variance_value': 0.02615907322541819, 'id': 'series_1'}
{'mean_value': 0.374615794974332, 'variance_value': 0.016237644230000542, 'id': 'series_1'}
{'mean_value': 0.3368923819944448, 'variance_value': 0.007769702907072476, 'id': 'series_1'}
{'mean_value': 0.3641823677196204, 'variance_value': 0.010874843022549683, 'id': 'series_1'}
{'mean_value': 0.41699373473017004, 'variance_value': 0.023386552774492617, 'id': 'series_1'}
{'mean_value': 0.36202213924695237, 'variance_value': 0.03456882216840719, 'id': 'series_1'}
{'mean_value': 0.4591217175846814, 'variance_value': 0.03486178073818337, 'id': 'series_1'}
{'mean_value': 0.47476402839503196, 'variance_value': 0.03316758304784372, 'id': 'series_1'}
{'mean_value': 0.5482987157944762, 'variance_value': 0.054927857854216576, 'id': 'series_1'}
{'mean_value': 0.46526713566002964, 'variance_value': 0.06709842912780846, 'id': 'series_1'}
{'mean_value': 0.46090067621227354, 'variance_value': 0.06992466915612668, 'id': 'series_1'}
{'mean_value': 0.5224462827386638, 'variance_value': 0.10894704036991246, 'id': 'series_1'}
{'mean_value': 0.5632832145708722, 'variance_value': 0.10985540907681254, 'id': 'series_1'}
{'mean_value': 0.44666801716330795, 'variance_value': 0.09893702340933808, 'id': 'series_1'}
{'mean_value': 0.5368918648323922, 'variance_value': 0.09166405095896404, 'id': 'series_1'}
{'mean_value': 0.5144648110532518, 'variance_value': 0.11199232916227533, 'id': 'series_1'}
{'mean_value': 0.49938584018866117, 'variance_value': 0.09938827879734466, 'id': 'series_1'}
{'mean_value': 0.4716097703486435, 'variance_value': 0.09376967981810244, 'id': 'series_1'}
{'mean_value': 0.5910882379591832, 'variance_value': 0.1003645378695941, 'id': 'series_1'}
{'mean_value': 0.5803645838951835, 'variance_value': 0.09898121097923593, 'id': 'series_1'}
{'mean_value': 0.7039928576093958, 'variance_value': 0.020673535287390687, 'id': 'series_1'}
{'mean_value': 0.5704245025761394, 'variance_value': 0.04310419488165011, 'id': 'series_1'}
{'mean_value': 0.5008519987049243, 'variance_value': 0.06987164237020813, 'id': 'series_1'}
{'mean_value': 0.45315061964337155, 'variance_value': 0.044934416781301396, 'id': 'series_1'}
{'mean_value': 0.421745039304814, 'variance_value': 0.038185084095358354, 'id': 'series_1'}
{'mean_value': 0.3093254817377519, 'variance_value': 0.040892355166890416, 'id': 'series_1'}
{'mean_value': 0.40002160850395113, 'variance_value': 0.0574693571996739, 'id': 'series_1'}
{'mean_value': 0.4003699788553254, 'variance_value': 0.05730911467210283, 'id': 'series_1'}
{'mean_value': 0.28062235372849387, 'variance_value': 0.06227347520213169, 'id': 'series_1'}
{'mean_value': 0.2742652616778768, 'variance_value': 0.060073264097181854, 'id': 'series_1'}
{'mean_value': 0.27659018264257546, 'variance_value': 0.05915645486250134, 'id': 'series_1'}
{'mean_value': 0.25412053128658096, 'variance_value': 0.04337053733566971, 'id': 'series_1'}
{'mean_value': 0.2557133756295184, 'variance_value': 0.04311613817919667, 'id': 'series_1'}
{'mean_value': 0.30954853143267264, 'variance_value': 0.029372626874139263, 'id': 'series_1'}
{'mean_value': 0.2997261655430858, 'variance_value': 0.02730188534235411, 'id': 'series_1'}
{'mean_value': 0.3451997117885135, 'variance_value': 0.015959961903110574, 'id': 'series_1'}
{'mean_value': 0.3830372698243864, 'variance_value': 0.037976017916535466, 'id': 'series_1'}
{'mean_value': 0.40429289484774866, 'variance_value': 0.03111113824382051, 'id': 'series_1'}
{'mean_value': 0.4323861244867814, 'variance_value': 0.027822433360127085, 'id': 'series_1'}
{'mean_value': 0.38062019377504874, 'variance_value': 0.043396425142829646, 'id': 'series_1'}
{'mean_value': 0.43529308869312794, 'variance_value': 0.04778812089169252, 'id': 'series_1'}
{'mean_value': 0.30534345084705883, 'variance_value': 0.03363696208801194, 'id': 'series_1'}
{'mean_value': 0.3365887244959882, 'variance_value': 0.03629077357559507, 'id': 'series_1'}
{'mean_value': 0.44950518164376707, 'variance_value': 0.10839578830132088, 'id': 'series_1'}
{'mean_value': 0.4738356395742665, 'variance_value': 0.09505379354881673, 'id': 'series_1'}
{'mean_value': 0.4960298849921691, 'variance_value': 0.10194977210765407, 'id': 'series_1'}
{'mean_value': 0.6283371712881902, 'variance_value': 0.06714699935835869, 'id': 'series_1'}
{'mean_value': 0.5873286666689638, 'variance_value': 0.08919378673518756, 'id': 'series_1'}
{'mean_value': 0.4070024406940405, 'variance_value': 0.07237231881245142, 'id': 'series_1'}
{'mean_value': 0.3685994265638033, 'variance_value': 0.09045974599444373, 'id': 'series_1'}
{'mean_value': 0.40856390974445195, 'variance_value': 0.12299906946318406, 'id': 'series_1'}
{'mean_value': 0.44951036535444244, 'variance_value': 0.15860268703970037, 'id': 'series_1'}
{'mean_value': 0.5548714538023447, 'variance_value': 0.15812139062295433, 'id': 'series_1'}
{'mean_value': 0.6897577793818732, 'variance_value': 0.10629616349225493, 'id': 'series_1'}
{'mean_value': 0.7711510338403761, 'variance_value': 0.02967698768609231, 'id': 'series_1'}
{'mean_value': 0.7457940054523255, 'variance_value': 0.02593779950803724, 'id': 'series_1'}
{'mean_value': 0.6116143589481036, 'variance_value': 0.038816841390718476, 'id': 'series_1'}
{'mean_value': 0.5307520877891891, 'variance_value': 0.0404388259283381, 'id': 'series_1'}
{'mean_value': 0.5113401451430359, 'variance_value': 0.0327576207240471, 'id': 'series_1'}
{'mean_value': 0.4954192301891718, 'variance_value': 0.03530233043884507, 'id': 'series_1'}
{'mean_value': 0.42956237651628515, 'variance_value': 0.0166414201635181, 'id': 'series_1'}
{'mean_value': 0.5327408243695155, 'variance_value': 0.0315110438099556, 'id': 'series_1'}
{'mean_value': 0.4662577795011555, 'variance_value': 0.0722928966479524, 'id': 'series_1'}
{'mean_value': 0.3602323747586749, 'variance_value': 0.0739776228920367, 'id': 'series_1'}
{'mean_value': 0.32195758026492677, 'variance_value': 0.07804407163251594, 'id': 'series_1'}
{'mean_value': 0.3227862395506274, 'variance_value': 0.078241667465389, 'id': 'series_1'}
{'mean_value': 0.2144455778222687, 'variance_value': 0.019371961647164312, 'id': 'series_1'}
{'mean_value': 0.25047902724908067, 'variance_value': 0.011026927425144738, 'id': 'series_1'}
{'mean_value': 0.2273664724297814, 'variance_value': 0.018259654276721632, 'id': 'series_1'}
{'mean_value': 0.3098042975790163, 'variance_value': 0.0396597570967331, 'id': 'series_1'}
{'mean_value': 0.3851831225042634, 'variance_value': 0.08256887171628557, 'id': 'series_1'}
{'mean_value': 0.40843877000351936, 'variance_value': 0.07934937767196505, 'id': 'series_1'}
{'mean_value': 0.4583553923507388, 'variance_value': 0.06918083651059075, 'id': 'series_1'}
{'mean_value': 0.6366836139193481, 'variance_value': 0.04170934694170468, 'id': 'series_1'}
{'mean_value': 0.6065150027554752, 'variance_value': 0.04729328397580289, 'id': 'series_1'}
{'mean_value': 0.5578602567550088, 'variance_value': 0.0359334312369662, 'id': 'series_1'}
{'mean_value': 0.505306480104087, 'variance_value': 0.06507317208787256, 'id': 'series_1'}
{'mean_value': 0.5112818181227915, 'variance_value': 0.06463072904847404, 'id': 'series_1'}
{'mean_value': 0.3995315606075998, 'variance_value': 0.024058088703591555, 'id': 'series_1'}
{'mean_value': 0.32121744690169135, 'variance_value': 0.04011678690972364, 'id': 'series_1'}
{'mean_value': 0.32251537998666124, 'variance_value': 0.0407882559636459, 'id': 'series_1'}
{'mean_value': 0.4367678913181091, 'variance_value': 0.04740375218195768, 'id': 'series_1'}
{'mean_value': 0.46520690439326307, 'variance_value': 0.05345103537214661, 'id': 'series_1'}
{'mean_value': 0.4215193106158928, 'variance_value': 0.07049080449779789, 'id': 'series_1'}
{'mean_value': 0.41423243258131864, 'variance_value': 0.0759418458925993, 'id': 'series_1'}
{'mean_value': 0.37450068086142296, 'variance_value': 0.06878346321956899, 'id': 'series_1'}
{'mean_value': 0.31678046830967566, 'variance_value': 0.045200945121324373, 'id': 'series_1'}
{'mean_value': 0.19478886550333596, 'variance_value': 0.028697565383925844, 'id': 'series_1'}
{'mean_value': 0.25730505484851396, 'variance_value': 0.037370966216009466, 'id': 'series_1'}
{'mean_value': 0.3138924915988758, 'variance_value': 0.02395942264754638, 'id': 'series_1'}
{'mean_value': 0.28694548986493446, 'variance_value': 0.023025192351318564, 'id': 'series_1'}
{'mean_value': 0.36744088417354104, 'variance_value': 0.06804922169662239, 'id': 'series_1'}
{'mean_value': 0.3807651697220777, 'variance_value': 0.0594591828429739, 'id': 'series_1'}
{'mean_value': 0.30526796462383976, 'variance_value': 0.07154672453189222, 'id': 'series_1'}
{'mean_value': 0.25844264500253833, 'variance_value': 0.0800084414703324, 'id': 'series_1'}
{'mean_value': 0.21204213896092577, 'variance_value': 0.08936812730544808, 'id': 'series_1'}
{'mean_value': 0.18398236728392175, 'variance_value': 0.05906703380558045, 'id': 'series_1'}
{'mean_value': 0.19039986472194978, 'variance_value': 0.05796221250405838, 'id': 'series_1'}
{'mean_value': 0.32670942285993004, 'variance_value': 0.10061071913200545, 'id': 'series_1'}
{'mean_value': 0.4889411537861246, 'variance_value': 0.12403437536000377, 'id': 'series_1'}
{'mean_value': 0.6350714435402318, 'variance_value': 0.07192518175287235, 'id': 'series_1'}