2017-02-28 96 views
0

什么算法可以说我有在数据集中的两个阵列:到选择二进制图像分类

1)第一种是阵列分类为(0,1) - [0,1,0,1,1, 1,0 .....]

2)第二个灰度图像向量的阵列成本函数,每个元素中有2500个元素(数字从0到300)。这些数字是来自50 * 50像素图像的像素。 - [[13 160 239 192 219 199 4 60 ..] [....] [....] [....] [....]]

该数据集的大小相当重要的(约12000个元素)。 我想建立bery基本的二元分类器,它会给出合适的结果。比方说,我想选择非深度学习,但一些监督方法。 这种情况适合吗?我已经尝试过使用各种参数的sklearn的SVM。但结果是不恰当的,并主要由1组成:[1,1,1,1,1,0,1,1,1,...]

什么是正确的方法?数据集的大小不足以通过监督算法得到好的结果吗?

回答

2

您或许应该在cross-validated上发帖: 但是作为一个直接的答案,您应该看看顺序来排列学习者,因为您已经很清楚SVM不是理想的解决方案。

如果您不想走deep learning路线,您应该查看Markov models以进行顺序学习,然而,Neural Networks在图像分类问题方面有非常好的记录。

理想情况下,对于顺序学习,您应该尝试查看Long Short Term Memory Recurrent Neural Networks,并查看您当前的数据集是否在现有数据语料库上进行预训练(说CIFAR-10)可能有所帮助。

所以我的推荐是给Tensorflow一个高级库,如Keras/SKFlow
神经网络只是您的机器学习曲目的另一个工具,您可能也会给它们一个真正的机会。

的编辑,以解决您的评论:
您的问题还没有一个缺乏SVM数据,
的SVM将工作做好,对于一个小的数据集,因为它会更容易为它过度拟合/适应在这个数据集上分离超平面。
随着您增加数据维度,请记住使用分离超平面来分离它变得越来越困难[查看维度的诅咒]。
但是,如果您以这种方式设置,请尝试一些降维 ,如PCA。

虽然这里你一定会找到另一个围栏断带神经网络, 由于Kohonen自组织映射做这个任务的美丽,你可以尝试 项目中的数据在一个较低的层面,因此允许SVM分离它具有更高的准确性。
我仍然必须坚持说你可能会使用不正确的方法。

+0

在我的情况下,SVM适用于数据集减少的情况。可以说多达3000个元素(12000个中)最终得分是〜0.7。但如果我想提高准确度,我需要更多的数据来训练。在这种情况下SVM变得太慢 –

+0

我在这个领域仍然是新的,有时导致“用正则表达式解析HTML”。这就是我发布这个问题的原因。如果SVM(即使是PCA)不好,那么我将把它作为默认设置,并且将更好地专注于构建NN –

+0

如果你仍然想尝试SVM,看看isomap(sklearn有一个实现),这可能就足够了。祝你好运探索 – SerialDev