我知道这是一个非常普遍的问题,没有关于我的实际项目的具体细节,但我的问题是:
我正在进行遥感图像分类。我使用的是面向对象的方法:首先我将图像分割到不同的区域,然后从颜色,形状和纹理等区域中提取特征。一个区域内所有特征的数量可能是30个,通常总共有2000个区域,我将选择5个类,每个类别有15个样本。
总结:
如何选择合适的分类器?如果有3个分类器(ANN,SVM和KNN),我应该选择哪个更好的分类?
答案 0 :(得分:5)
KNN是最基本的机器学习算法,用于参数化和实现,但正如@etov所暗示的那样,由于训练数据量较小,SVM可能会超越SVM。人们已经观察到人工神经网络受到训练数据不足的限制。但是,除了准确的训练数据应该构成相对离散的群集之外,KNN对您的数据做出的假设数量最少。人工神经网络和支持向量管理是众所周知的难以集中化,特别是如果您希望使用多个数据集重复该过程并依赖某些假设,例如您的数据是线性可分的(SVM)。
我还建议使用Random Forests算法,因为这很容易实现,并且对训练数据大小相对不敏感,但我建议不要使用非常小的训练数据大小。
scikit-learn模块包含这些算法,能够处理大型训练数据大小,因此您可以增加训练数据样本的数量。确切地知道的最好方法是自己调查,如@etov
所建议的那样答案 1 :(得分:2)
如果您的“样本数据”是列车集,那么它似乎非常小。我建议每个班级使用超过15个例子。
如评论中所述,最好将算法与问题相匹配,这样您就可以简单地测试哪种算法效果更好。但首先,我建议SVM:它比小型列车组的KNN更好,并且通常更容易训练ANN,因为选择较少。
答案 2 :(得分:0)
看看下面的思维导图
KNN:对于非文本数据,当样本大小<100K记录时,KNN表现良好。如果准确性不高,请立即移至SVC(SVM的支持向量分类器)
SVM :当样本量> 100K记录时,请使用SGDClassifier进行SVM。
人工神经网络: ANN随着时间的推移而发展,并且功能强大。您可以结合使用ANN和SVM对图像进行分类
更多详细信息,请访问{semanticscholar.org