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

我正在进行一个项目,需要实现SVM机器学习算法。我试图预测前臂运动意图。我使用加速度计(附着在我的前臂上)来测量x、y、z轴的角度变化。我之前从未使用过机器学习。我遇到的问题是我不知道如何构建训练集。我知道每个轴的角度变化,并且知道例如当x=45度,y=65度,z=30度时,我执行的动作是屈曲。我希望实现三种手势。所以我拥有的是以下数据:

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的值进行预测吗?无需提供目标值。我的理解正确吗?


回答:

首先,我建议你不要对数据进行缩放或编码。保持数据为人类可读的形式。相反,编写前端程序来执行这些任务,并编写后端程序来逆转这个过程。同时,还应该有内部程序可以以内部形式显示数据。提前做好这些工作将大大增强你后续的调试过程。

是的,你可能会想要将你的分类编码为1、2、3。另一种可能性是使用“单热”有序三元组:(1,0,0)或(0,1,0)或(0,0,1)。然而,大多数SVM算法是为标量输出设计的。此外,请注意,对于多类别算法的典型处理方式是运行三次独立的SVM计算,即“一对多”。对于每个类别,你将该类别作为“正”数据,其余所有类别作为“负”数据。

数据缩放对于回归收敛很重要。如果你是通过完全和直接计算支持向量来构建SVM的,你不需要缩放这些处于兼容范围内的数字。如果你是通过某种迭代近似方法来做的,对于这些数据你仍然不需要缩放——但请记住将来可能会需要。

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注