我是Weka的新手,我正在尝试建立一个分类器来对EEG数据进行分类。EEG属性数据是记录的5分钟原始信号以及其他属性。如何以 WEKA arff 文件格式指定我的实例具有 5 分钟原始信号的矢量输入?
例如:
Num. -- raw -- class
1 -- [1,2,3,4,5,6] -- Relaxed
2 -- [2,3,4,5,6] --- Bored
其中raw
是属性向量。
想想你的问题 - 你想分类/预测什么,以及如何最好地表示它。您可能不想预测下一个原始脑电图读数,因此时间序列方法可能并不重要。
Weka 只能处理具有一组固定属性(特征、值,或者换句话说,预定义长度的向量)的实例(数据行)。可以拥有的属性类型是nominal
(例如"红色","绿色","蓝色"),numeric
(任何整数/浮点值)string
(主要用于文本挖掘)。和date
.无法将raw signal
向量表示为单个属性。以下是文档:http://weka.wikispaces.com/ARFF+%28stable+version%29
也就是说,您的实例可能如下所示:
num,class1,reading_1,reading_2,reading_3 ... reading_n,relaxed,bored
其中reading_1
是第一个原始读数,reading_n
是 5 分钟结束时的最后一个。这将要求WEKA根据原始读数预测您的班级,并且可能不会非常有效(因为读数可能彼此不一致,并且因为这将每个读数分开处理,而不关心频率或平均值之类的东西是相对的)。
或者,您可以对原始数据进行一些预处理,以便它对 WEKA 中的大多数机器学习算法有用。在这种情况下,您需要确定重要功能,然后创建它们。一个粗略的例子可能是:
num,class1,average,frequency,max_magnitude,standard_deviation,relaxed,bored
在将数据放入 ARFF 文件之前,您已经计算了数据的平均值和频率等内容。然后,算法对数据集有了更丰富的信息,作为预测的基础。
但是,还有一个问题是你代表什么?整个 5 分钟样本是同一个类,还是用户relaxed
其中一部分,bored
部分?如果是这种情况,您可能应该有两个样本:一个用于用户无聊时,另一个用于她放松时。