我正在寻找一个监督神经网络的良好源代码示例,该网络接受两个以上的特征(与大多数XY示例不同)并将数据分为两组。根据我的阅读,Support Vector Machine (SVM)可能是一个解决方案吗?
我发现的所有分类示例都是二维的。以下是一些:
我正在尝试区分罕见事件和一些通常稳定的输入。 功能是键值对,其中值通常可以作为一个小数字离散化。第一类的可用培训数据非常庞大,但第二类培训数据很少,如果这样做有所不同。
[2, 1, 0, 1, 4, 3] -> A
[1, 1, 2, 3, 3, 0] -> A
[0, 0, 1, 3, 2, 0] -> A
[0, 4, 4, 4, 4, 3] -> B
[1, 3, 4, 4, 4, 0] -> ??? (probably B)
信心等级,例如。 “85%确定B”,有助于区分罕见事件的门槛。
神经网络是最好的解决方案吗?是否有内置的.NET库?
答案 0 :(得分:2)
实际上,所有这些机器学习技巧都有其优点和缺点。 在使用NN(单层感知器)时,您需要考虑是否有足够的训练数据。从技术上讲,您需要能够覆盖尺寸内的所有细胞才能获得良好的效果。
另一方面,SVM试图找到一个分隔数据点的边框,这样如果你的边界区域有间隙,那就没关系了。
围绕+/-提升有5-6个分类器并且说实话,似乎大多数时间类型的分类器是主观选择的。另一方面,有些人使用多个分类器并比较结果。
使用OpenCV,可以很容易地插入不同的分类器,因此您可以正确地使用它。我在C ++中使用OpenCV和NN分类器来完成我的项目,结果非常好:
答案 1 :(得分:-1)
SVM是n维的-只是示例通常是2D的,因为一旦达到3个以上,解决方案就不再真正适合2D插图。
它只有两个输出类(通常是Good和Bad),但是具有您喜欢的许多功能。这就是为什么将您的两个SVM类分开的线称为“超平面”的原因,因为它存在于多维空间中-每个要素一个维。