Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning SVM机器学习-如何在训练集中定义目标?_Machine Learning_Svm_Training Data - Fatal编程技术网

Machine learning SVM机器学习-如何在训练集中定义目标?

Machine learning SVM机器学习-如何在训练集中定义目标?,machine-learning,svm,training-data,Machine Learning,Svm,Training Data,我正在做一个项目,我必须实现支持向量机机器学习算法。我试图预测前臂的运动意图。我正在使用加速度计(连接到我的前臂)测量x、y、z轴的角度变化。我以前从未用过这台机器。我遇到的问题是,我不知道如何构造训练集。我知道每个轴的角度变化,也就是说,如果x=45degrees,y=65degrees,z=30degrees,我执行的手势是弯曲的。我想实现3种手势。因此,我拥有的数据是: x y z Target 20 60 90 flexion 100

我正在做一个项目,我必须实现支持向量机机器学习算法。我试图预测前臂的运动意图。我正在使用加速度计(连接到我的前臂)测量x、y、z轴的角度变化。我以前从未用过这台机器。我遇到的问题是,我不知道如何构造训练集。我知道每个轴的角度变化,也就是说,如果
x=45
degrees,
y=65
degrees,
z=30
degrees,我执行的手势是弯曲的。我想实现3种手势。因此,我拥有的数据是:

x     y     z      Target
20    60    90     flexion   
100   63    23     internal rotation    
89    23    74     twist
。 . .

x     y     z      Target
20    60    90     flexion   
100   63    23     internal rotation    
89    23    74     twist
我有一个大约有2000个条目的文件。我知道,我必须规范化训练集,以便缩放数据。我想对其进行缩放,使其位于范围
[0.9,0.1]
内。问题是我不知道如何在训练集中表示目标。我能用随机数吗?1表示屈曲,2表示内旋,3表示扭转

x     y     z      Target
20    60    90     flexion   
100   63    23     internal rotation    
89    23    74     twist

此外,培训完成后,我是否可以仅根据x、y、z的值进行预测??无需提供目标值。我的理解正确吗?

首先,我建议您不要对数据进行缩放或编码。让它以人类可读的形式存在。相反,编写前端例程来执行这些任务,编写后端例程来反转过程。还具有可以在内部窗体中显示数据的内部例程。预先执行这些操作将极大地增强您以后的调试

x     y     z      Target
20    60    90     flexion   
100   63    23     internal rotation    
89    23    74     twist
是的,您可能希望将分类编码为1、2、3。另一种可能性是有一个“一热”有序三元组:(1,0,0)或(0,1,0)或(0,0,1)。然而,大多数支持向量机算法都是针对标量输出而建立的。另外,请注意,多类算法的典型处理方法是运行三个单独的SVM计算,“一对一”。对于每个类,将该类视为“正”数据,将所有其他类视为“负”数据

x     y     z      Target
20    60    90     flexion   
100   63    23     internal rotation    
89    23    74     twist
缩放数据对于回归收敛非常重要。若你们通过支持向量的完整和直接计算来构建你们的支持向量机,你们不需要缩放兼容范围内的数字,比如这些。如果你是通过某种迭代近似来做的,你仍然不需要它来处理这些数据,但是要记住它,以备将来使用

x     y     z      Target
20    60    90     flexion   
100   63    23     internal rotation    
89    23    74     twist

是的,预测只给出输入:x,y,z。它将返回目标分类。这就是监督学习的目的:总结经验,对未来进行分类。

你必须使用SVM吗?在交叉验证的社区中,你可能会在这个问题上有更好的运气。有人建议我使用SVM。。。什么是交叉验证社区???缩放数据对SVM也很重要,因为这不是仿射变换不变方法。因此,不同的尺度意味着不同的结果,这与解算器无关,而与支持向量机本身的成本有关。此外,在任何类转换中都没有意义-无论编码为1、2、3还是一个hot都是不需要的,因为SVM是一个二进制模型,它将不关心您所称的标签。感谢更新。我使用的一些算法坚持将标签编码为整数。如果OP的算法中没有这一限制,那么人为地对它们进行编码肯定没有意义。当然,许多事情可能是特定于实现的,对于SVM来说,尽管特定库需要特定的编码,但任何特定的编码都没有意义。非常感谢您的回答。非常有帮助。。但我没有得到这一部分:另外,请注意,多类算法的典型处理方法是运行三个单独的SVM计算,“一对一”。对于每个类,将该类视为“正”数据,将所有其他类视为“负”数据。很抱歉,我只是无法得到它搜索“SVM”+“一对所有”。有大量的点击率。简单地说,您为每个类训练一次:将该类重新编码为“1”,将其他类重新编码为“0”,然后训练SVM模型。完成所有三个类的测试后,您就可以解决发现的模型之间的重叠或差距(通常通过获取“最接近”的分数,有时根据类大小进行加权)。
x     y     z      Target
20    60    90     flexion   
100   63    23     internal rotation    
89    23    74     twist