如何提取机器学习模型用于不同实现?

我是一名电子爱好者,正在尝试使用机器学习来建模传感器中的误差。我在个人电脑上使用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代码中使用

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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