我正在做遥感图像分类。我使用的是面向对象的方法:首先将图像分割到不同的区域,然后从区域中提取特征,例如颜色、形状和纹理。一个区域的所有特征的数量可能是 30,通常总共有 2000 个区域,我将选择 5 个类,每个类 15 个样本。
总之:
- 样本数据 1530
- 测试数据197530
如何选择合适的分类器?如果有 3 个分类器(ANN、SVM 和 KNN),我应该选择哪个分类更好?
我正在做遥感图像分类。我使用的是面向对象的方法:首先将图像分割到不同的区域,然后从区域中提取特征,例如颜色、形状和纹理。一个区域的所有特征的数量可能是 30,通常总共有 2000 个区域,我将选择 5 个类,每个类 15 个样本。
总之:
如何选择合适的分类器?如果有 3 个分类器(ANN、SVM 和 KNN),我应该选择哪个分类更好?
KNN 是用于参数化和实现的最基本的机器学习算法,但正如 @etov 所暗示的,由于训练数据量小,SVM 可能会优于 SVM。已经观察到人工神经网络也受到训练数据不足的限制。但是,KNN 对您的数据做出的假设数量最少,除了准确的训练数据应该形成相对离散的集群。众所周知,ANN 和 SVM 难以参数化,特别是如果您希望使用多个数据集重复该过程并依赖某些假设,例如您的数据是线性可分 (SVM)。
我还推荐随机森林算法,因为它易于实现并且对训练数据大小相对不敏感,但我建议不要使用非常小的训练数据大小。
scikit-learn 模块包含这些算法,能够处理大量的训练数据,因此您可以增加训练数据样本的数量。正如@etov 所建议的那样,最好的确定方法是自己调查它们
如果您的“样本数据”是训练集,它似乎非常小。我首先建议每节课使用超过 15 个示例。
正如评论中所说,最好将算法与问题相匹配,因此您可以简单地测试一下哪种算法效果更好。但首先,我建议 SVM:它比 KNN 与小型训练集更有效,并且通常比 ANN 更容易训练,因为可供选择的选择更少。
Have a look at below mind map
KNN: KNN performs well when sample size < 100K records, for non textual data. If accuracy is not high, immediately move to SVC ( Support Vector Classifier of SVM)
SVM: When sample size > 100K records, go for SVM with SGDClassifier.
ANN: ANN has evolved overtime and they are powerful. You can use both ANN and SVM in combination to classify images
More details are available @semanticscholar.org