我是一名电子爱好者,正在尝试使用机器学习来建模传感器中的误差。我在个人电脑上使用Python中的scikit-learn库的SVM算法对传感器数据进行了训练。
但是,过滤数据的使用场景要求非常即时,即传感器数据用于维持四轴飞行器的飞行,原始传感器数据需要通过训练的模型以至少200 Hz的速率进行过滤。虽然我的电脑可以做到这一点,但我无法将电脑放置在四轴飞行器上,因此我需要将该模型运行在小型CPU/微控制器上,但我的选择范围内的微控制器都不支持Python。
那么,我如何获取/提取所学模型的数学本质,换句话说,如何获取通过训练近似的那个函数,以便我可以在任何我选择的微控制器上实现它?
我只是一个初学者,正在尝试学习,任何帮助都将不胜感激。
回答:
由于计算能力有限,可能一个好的选择是使用逻辑回归,它简单,计算成本低,并且易于复制,它是一个简单的函数,如 y = w0 + w1.x1 + w2.x2 + … + wn.xn。
要提取函数,您可以使用scikit-learn的LogisticRegression模型中的以下属性(http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html):
属性:coef_ : 数组,形状为 (1, n_features) 或 (n_classes, n_features)
决策函数中特征的系数。
当问题是二元时,coef_ 的形状为 (1, n_features)。
intercept_ : 数组,形状为 (1,) 或 (n_classes,)
添加到决策函数中的截距(也称为偏置)。
如果fit_intercept设置为False,截距会被设置为零。当问题是二元时,intercept_ 的形状为(1,)。
如果你仍然想使用SVM,我认为这个问题可能对你有帮助:如何从scikits.learn分类器中提取信息以便在C代码中使用