我正在智能设备上实现k最近邻算法,以便从识别数据中识别人类活动。我将解释我将如何实施它。你们能建议我对我正在采取的步骤进行任何改进,并回答我在途中可能会提出的任何问题吗?
这些步骤是:
我下载了一个labelled dataset,其中包含来自加速度计的三轴加速度以及描述活动的标签。我将在此数据集中只选择那些我想识别的活动的数据(在我的情况下,是步行,坐着或站立)。
然后,我将从数据集和I中的加速度计数据的每个窗口(即,从包含128个加速度计数据读数的数据集中的每个记录)中提取特征(在我的情况下,与幅度加速度的平均值,最小值,最大值,标准差)。会将这些功能与窗口标签(作为一条记录)一起以JSON格式存储在设备上的文本文件中。因此,训练数据集中的一个记录/样本将包括:平均值,最小值,最大值,标准差和标签
在分类步骤中,我还将从收集的数据中获得一个加速度计数据窗口,从中可以提取上述4个特征。因此,我需要将收集到的数据的4个特征与训练数据中的每个样本进行比较。我应该如何找到它们之间的相似性,因为一条记录将包含4个特征?
为了解决第(3)点中的问题,我正在考虑通过计算k个最近邻之间的差异来计算k个最近邻,然后从每个特征中选出多数。你觉得怎么样?您可以提出任何优化建议吗?谢谢 :)
最佳答案
相当有趣和有趣的应用程序! ;-)
好吧,当然的问题之一就是知道何时启动和停止计算这些功能,但是我想您已经对此有了一些解决方案(固定时间窗口或按钮...)。
您当然可以使用knn分类器来执行此操作,但是那绝对不是我的首选,因为它对异常值非常敏感(如果您的度量值固定用于单个培训课程,则将永远影响您的下一个分类) 。
因此,我宁愿选择高斯模型:
为每个活动记录大约10到20个示例(即4个值的向量)
计算每个活动的平均向量和对角协方差矩阵
在测试时,您可以计算出新的观测矢量是由三个高斯模型之一生成的高斯似然,并且选择可能性最大的活动。