WEKA& HMMWeka,火车和测试模型

时间:2014-05-08 15:58:52

标签: weka gesture-recognition hidden-markov-models

我尝试使用WEKA进行手势识别。我是这个程序的新手,所以任何帮助都会受到赞赏。

更具体我在步骤中所做的事情:

  1. 安装WEKA
  2. 安装HMMWeka库
  3. 我的数据包含传感器的旋转,我尝试在"简单"中创建.arff。格式和"多实例"格式
  4. 我有4个手势记录,每个手势重复3次。所以我的初衷是"简单"格式,是从第一次重复开始使用gesture1训练模型,并使用来自其余两次重复的gesture1来测试它(识别它)。 使用"多实例"格式,在每个.arff文件中,我每次重复都有四个手势。

    所以我的问题是:

    • 我不确定我的文件是否在"多实例"格式是正确的。这是其结构的一个例子

    @relation rotation
    @attribute bag_ID {1, 2, 3, 4, 5, 6, 7, 8, 9}
    @attribute bag relational
    @attribute rotation { rot1 , rot2 , rot3 }
    @attribute x_left_hand numeric
    @attribute y_left_hand numeric
    @attribute z_left_hand numeric
    @attribute x_right_hand numeric
    @attribute y_right_hand numeric
    @attribute z_right_hand numeric
    @end bag
    @attribute gesture { g1, g2, g3, g4}
    
    @data
    1,"rot1, 1.394962, 19.704826, 0.536432, 1.594745, 7.511097, 0.269678", g1
    2,"rot1, 1.337786, 19.681709, 0.468583, 1.63736, 7.536188, 0.35687", g1
    3,"rot1, 1.280635, 19.658672, 0.400756, 1.679905, 7.561322, 0.443999", g1
    4,"rot1, 2.217022, 15.327432, -1.997938, 0.256819, 10.011353, 2.300805", g2
    5,"rot1, 2.304201, 15.276058, -2.076832, 0.161013, 9.993914, 2.351273", g2
    6,"rot1, 2.271477, 22.43351, 3.477951, 1.245202, 5.531068, -1.06918", g3
    7,"rot1, 2.218041, 22.370411, 3.506101, 1.299245, 5.590856, -1.078336", g3
    8,"rot1, 1.557125, 16.531981, 4.000765, 3.098644, 5.841918, -3.751997", g4
    9,"rot1, 1.557125, 16.531981, 4.000765, 3.116652, 5.932492, -3.760822", g4
    
    • 虽然WEKA读取两种格式,但当我选择HMM进行训练时,它会选择(也是默认值)标称类手势,而我想使用关系属性或所有其他属性作为一组。在trainig中正确分类的结果也非常低.22%

    • 根据我向WEKA提供的所有属性作为输入,测试结果将是哪个手势。

    • 你知道这是否可行?我可以使用所有数字属性进行培训吗?我的格式有问题吗?

    我在谷歌搜索了很多,找到像http://weka.8497.n7.nabble.com/Relational-attributes-vs-regular-attributes-td29946.html这样的东西并尝试了很多组合......但我仍然有问题! 我还尝试使用两个分类器,高斯进程和HMM,但它弹出一个错误(weka.classifiers.meta.Stacking:无法处理二进制类)。

    任何帮助都会非常感激!!

    提前谢谢!! 最好的问候,

1 个答案:

答案 0 :(得分:0)

毫米你正在使用时间序列,但没有序列,我的意思是,想象你有一个向量

x []并且x的每个元素都是那个时间的x的值,你只发布了x [0],很多次,在你的情况下,x是一个有

的结构
struct x {
    double x_left_hand;
    double y_left_hand;
    double z_left_hand;
    double x_right_hand;
    double y_right_hand;
    double z_right_hand;
}

这是正确的,但手势的时间没有进化,我不知道我是否解释得很好,英语太差了......

我将给你发一个我正在研究的例子,它可能对你有所帮助

@relation AUs

@attribute sequences relational
 @attribute  AU0 NUMERIC
 @attribute  AU1 NUMERIC
 @attribute  AU2 NUMERIC
 @attribute  AU3 NUMERIC
 @attribute  AU4 NUMERIC
 @attribute  AU5 NUMERIC
@end sequences
@attribute class {01, 01b, 01c, 01d, 02, 02a, 02c, 04, 05, 07, 10, 11, 13, 14, 15, 17, 18, 19, 21}

@data
"0.5840133,-0.13073722,-0.8034836,0.16867049,-0.30464363,-0.15208732\n....\n0.47603312,-0.10599292,-0.4781358,0.30258814,-0.27299756,0.07913079\n0.5878206,-0.12593555,-0.42014712,0.30809718,-0.33109784,0.013338812\n0.6120923,-0.12400548,-0.3479098,0.26818287,-0.39161837,0.07279621\n0.6180023,-0.11955684,-0.35120794,0.28354084,-0.351862,-0.017126387\n0.6166399,-0.13956356,-0.3506564,0.25470608,-0.34935358,0.025823373\n0.59575284,-0.13704558,-0.42580596,0.24725975,-0.33137816,-0.04043307\n0.5571964,-0.13607484,-0.3777615,0.21615964,-0.35109887,-0.068926826\n0.52844477,-0.10942138,-0.38436648,0.2355144,-0.3238311,-0.06743353\n0.64967036,-0.13547328,-0.28889894,0.21237339,-0.3741229,0.02283336\n0.641207,-0.13648787,-0.35315526,0.27048427,-0.39234316,0.026359601\n0.6241689,-0.14557217,-0.39503983,0.261346,-0.3732989,0.0811597\n0.46664864,-0.092378475,-0.42906052,0.29789245,-0.3076035,0.015037567\n0.528294,-0.19327107,-0.59035814,0.26079395,-0.3222413,-0.022527361\n0.56722254,-0.16849008,-0.4722441,0.2480416,-0.3971509,0.023736712",01

在这个例子中,我们有时间,而不仅仅是初始位置。

我希望它有用