我有一个数据集,其中包含水流随时间变化的时间序列数据。我有一个连接到厨房水龙头的流量计,我正在尝试对特定的用水事件进行聚类或分类。
每秒收集一次数据,在每一行中,我都会得到一个流过我的流量计的加仑量的值。
例如,我正在尝试对某人洗手、给茶壶倒茶、洗碗等进行分类……
这是我可以使用 k-NN 分类方法对这些事件进行聚类的东西吗?如果基于聚类的方法不好,那么还有什么其他分类方法对这种类型的数据有好处?
如果我进行一些实验,我可以对每个事件进行分类并将其转化为监督学习问题。但目前,没有任何水事件被分类。
我的数据集的一个非常精简的版本如下所示:
编辑
water = pd.DataFrame(shower1)
rng = pd.date_range('2016-09-01 00:00:00', '2016-09-30 23:59:58', freq='S')
water = water.reindex(rng,fill_value=0.0)
water = water['shower1']
df = pd.DataFrame({'time_stamp':rng,'water_amount':water})
starts = (df['water_amount']>0)&(df['water_amount'].shift(1)==0) #find all starts of events
n_events = sum(starts) #total number of events
df.loc[starts,'event_number'] = range(1,n_events+1) #numerate starts from 1 to n
df['event_number'] = df['event_number'].fillna(method='pad').fillna(-1) #forward fill all the values
df.loc[df['water_amount']==0,'event_number']=-1 #set all event numbers to -1 where the water amount is 0
df.groupby('event_number').agg({'time_stamp':'first',
'water_amount':'sum'}) #feature matrix

