c++ - C++中无库分类SVM的实现

标签 c++ machine-learning classification svm

我最近几周在学习支持 vector 机。我了解如何将数据分为两类的理论概念。但我不清楚如何选择支持 vector 并生成分隔线以使用 C++ 对新数据进行分类。

假设,我有两个类的两个训练数据集

enter image description here

绘制数据后,我得到了以下带 vector 的特征空间,这里,分隔线也很清楚。

enter image description here

如何在没有库函数的情况下在 C++ 中实现它。这将帮助我理清关于 SVM 的实现概念。我需要清楚实现,因为我将在我的母语的意见挖掘中应用 SVM。

最佳答案

我会加入大多数人的建议,并说你真的应该考虑使用图书馆。 SVM 算法非常棘手,如果由于您的实现中的错误而无法正常工作,则会增加噪音。更不用说在内存大小和时间上实现可扩展的实现有多难了。

也就是说,如果您只是想将其作为一种学习体验来探索,那么 SMO 可能是您的最佳选择。以下是您可以使用的一些资源:

The Simplified SMO Algorithm - Stanford material PDF

Fast Training of Support Vector Machines - PDF

The implementation of Support Vector Machines using the sequential minimal optimization algorithm - PDF

我找到的最实用的解释可能是 Peter Harrington 所著的机器学习实战一书第 6 章中的解释。代码本身在 Python 上,但您应该能够将其移植到 C++。我不认为这是最好的实现,但它可能足以让我们了解正在发生的事情。

代码是免费的:

https://github.com/pbharrin/machinelearninginaction/tree/master/Ch06

遗憾的是,该章没有样本,但许多本 map 书馆往往都有这本书。

关于c++ - C++中无库分类SVM的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501444/

相关文章:

c++ - 为什么 C++11 中没有 vector(size_type n, const Allocator& alloc)?

c++ - 我是否需要手动删除或管理这个 unique_ptr

machine-learning - sklearn oneclass svm KeyError

python - Keras 功能 api 给出错误 "expected ndim=3, found ndim=4"

python - 如何使用 Keras 确定类别?

opencv - 使用隐马尔可夫模型进行手形分析

c++ - 用于图像处理的重载 [ ] [ ] 运算符

c++ - 如何在进行分页时设置 Qt::Vertical headerData of QSqlQueryModel 增加数字

python-3.x - 当我尝试重新创建来自 Hands On Machine Learning with Sci-Kit Learn & Tensorflow 的住房数据集时,该数据集不显示

testing - Weka:为什么用我的测试集重新评估没有给出任何结果而不抛出错误消息?