如何提取学习的 ML 模型以实现不同的实现?

Posted

技术标签:

【中文标题】如何提取学习的 ML 模型以实现不同的实现?【英文标题】:How to extract learned ML model for distinct implementation? 【发布时间】:2018-08-01 10:25:52 【问题描述】:

我是一名电子爱好者,试图使用 ML 对传感器中的错误进行建模,我已经在我的 PC 中使用 Python 中的 scikit-learn 中的 SVM 对传感器数据上的模型进行了训练。

但是过滤数据的用例是非常瞬时的,即传感器数据用于维持四轴飞行器的飞行,原始传感器数据应该至少以 200 Hz 的速率通过学习模型进行过滤,当然我的PC 可以做到,但我不能将我的 PC 放在四轴飞行器上,因此我需要在微型 CPU/微控制器上运行该模型,但是我选择的合适的微控制器不支持 python。

那么我如何获得/提取学习模型的数学本质,换句话说,我如何获得通过训练近似的函数,以便我可以在我选择的任何微控制器中实现它。

只是一个尝试学习的初学者,任何帮助将不胜感激。

【问题讨论】:

您使用的是哪种机器学习算法? C-支持向量分类。带 RBF 内核 我不是电子霍比特人,我的 arduino 可以运行 pyhton 我们需要实现SVC的决策功能。你在解决分类问题吗?如果是,请尝试逻辑回归,然后很容易导出模型。它只是一个 sigmoid 函数的点积 这是一个类似的问题***.com/questions/8360253/… 【参考方案1】:

由于计算能力有限,也许一个不错的选择是使用逻辑回归,它很简单,计算成本低,易于重现,它是一个简单的函数,如 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,我认为这个类似的问题可能对您有用:How to extract info from scikits.learn classifier to then use in C code

【讨论】:

以上是关于如何提取学习的 ML 模型以实现不同的实现?的主要内容,如果未能解决你的问题,请参考以下文章

机器学习面试--一句话概括传统ML算法

ML学习二——单变量线性回归

深度学习实战——不同方式的模型部署(CNNYolo)

ML.NET Cookbook:(18)如何在文本数据上训练模型?

Coursera-ML-Notes一元线性模型

使用C# 探索 ML.NET 中的不同机器学习任务