我有以下信号图像,我想根据形状进行分类。哪种算法适合这样做?我附上了每班2-2张图片。
答案 0 :(得分:0)
您可能想要使用sklearn。假设您要基于 images 而不是从中生成图像的 data 对这些模式进行分类,您可以使用简单的k-nearest-neighbor(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
为{{1}} }。因为考虑到太多的培训数据太低而且您可能考虑的太少,您的错误分类风险太大而且存在错误分类的风险。
如果您决定使用sklearn,那么您应该查看一个优秀的tutorial here。
您的图片似乎是非常离散的类。如果您不想使用sklearn,则可能能够根据曲线所覆盖的图像区域对图像进行分类。如果这些是这三个类中的唯一类,您可以尝试其中一些来查看它们是否为您提供了良好的图像分类阈值:
如果您决定使用第二种方法,请务必查看Python Imaging Library。如果我没弄错的话,它实际上是用于sklearn。