我有以下信号图像,我想根据形状进行分类。哪种算法适合这样做?我附上了每个班级的2-2图像。
发布于 2014-05-01 00:46:18
您可能会想要使用sklearn。假设您希望基于图像而不是生成图像的数据对这些模式进行分类,则可以使用简单的k最近邻(KNN)分类器。
KNN classification是一种可以对许多不同类型的数据进行分类的方法。首先,使用标记数据(在您的情况下,图像似乎属于不同频率的类)来训练算法。然后,该算法分析未标记的数据,即要分类的数据。“最近邻”部分意味着算法看到的每个新数据片段都是根据训练算法时使用的k
最近数据片段进行分类的。这个想法是,某个类别的新数据在数字上与另一个类别相似。下面是算法如何工作的高级工作流程:
train_set = [(img1, 'low freq'), (img2, 'hi freq'), (img3, 'low freq'), (img4, 'med freq'), (img5, 'med freq')]
img_classifier = algorithm(train_set)
然后,在新数据上调用经过训练的算法来识别未标记的图像。
test = [img6, img7]
for i in test:
img_classifier(test)
不过,您需要使用的不只是五个训练图像。您选择的k
的值也很重要。假设您为每个类训练了相同数量的图像(假设是n
),对于训练的3n
图像总数,一个好的k
是k=n/2
。太高,你可能会有错误分类的风险,因为你考虑了太多的训练数据,太低,你可能会考虑太少。
如果你决定使用tutorial here,有一个很棒的sklearn你一定要看看。
您的图像似乎在非常离散的类中。如果您不想使用sklearn,则可以根据曲线覆盖的图像区域对图像进行分类。如果仅有这三个类别,您可以尝试其中的一些类别,看看它们是否为图像分类提供了一个好的阈值:
如果您决定使用第二种方法,请务必查看Python Imaging Library。实际上,如果我没记错的话,它用在sklearn中。
https://stackoverflow.com/questions/23053365
复制相似问题