我是Weka的新手,正在尝试构建一个分类器来对EEG数据进行分类。EEG属性数据包括5分钟的原始信号记录以及其他属性。我如何在Weka的arff文件格式中指定我的实例有一个5分钟原始信号的向量输入?
例如:
Num. -- raw -- class1 -- [1,2,3,4,5,6] -- Relaxed2 -- [2,3,4,5,6] --- Bored
其中raw
是一个属性向量..
回答:
考虑一下你的问题——你试图分类/预测什么,以及如何最好地表示它。你可能并不想预测下一个原始EEG读数,因此时间序列方法可能不是关键的。
Weka只能处理具有固定属性集(特征、值,或者换句话说,是预定义长度的向量)的实例(数据行)。可以拥有的属性类型包括nominal
(例如“red”,“green”,“blue”),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
?如果是这种情况,你可能应该有两个样本:一个是用户感到无聊时的样本,一个是她感到放松时的样本。