ANN、SVM 和 KNN 分类器有什么区别?

发布于 2024-12-03 06:29:10 字数 245 浏览 8 评论 0原文

我正在做遥感图像分类。我使用面向对象的方法:首先将图像分割到不同的区域,然后从区域中提取特征,例如颜色、形状和纹理。一个区域中所有特征的数量可能是 30 个,通常总共有 2000 个区域,我将选择 5 个类,每个类有 15 个样本。

总结:

  • 样本数据 1530
  • 测试数据 197530

如何选择合适的分类器?如果有 3 个分类器(ANN、SVM 和 KNN),我应该选择哪个才能更好地分类?

I am doing remote sensing image classification. I am using the object-oriented method: first I segmented the image to different regions, then I extract the features from regions such as color, shape and texture. The number of all features in a region may be 30 and commonly there are 2000 regions in all, and I will choose 5 classes with 15 samples for every class.

In summary:

  • Sample data 1530
  • Test data 197530

How do I choose the proper classifier? If there are 3 classifiers (ANN, SVM, and KNN), which should I choose for better classification?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

打小就很酷 2024-12-10 06:29:10

KNN 是要参数化和实现的最基本的机器学习算法,但正如 @etov 所提到的,由于训练数据量较小,KNN 的性能可能会优于 SVM。据观察,人工神经网络也受到训练数据不足的限制。然而,除了准确的训练数据应形成相对离散的集群之外,KNN 对数据做出的假设数量最少。众所周知,ANN 和 SVM 很难参数化,特别是如果您希望使用多个数据集重复该过程并依赖某些假设,例如您的数据是线性可分离的 (SVM)。

我还推荐随机森林算法,因为它很容易实现,并且对训练数据大小相对不敏感,但我建议不要使用非常小的训练数据大小。

scikit-learn 模块包含这些算法,并且能够处理较大的训练数据量,因此您可以增加训练数据样本的数量。正如 @etov 所建议的,最好的确定方法是亲自调查它们

KNN is the most basic machine learning algorithm to paramtise and implement, but as alluded to by @etov, would likely be outperformed by SVM due to the small training data sizes. ANNs have been observed to be limited by insufficient training data also. However, KNN makes the least number of assumptions regarding your data, other than that accurate training data should form relatively discrete clusters. ANN and SVM are notoriously difficult to paramtise, especially if you wish to repeat the process using multiple datasets and rely upon certain assumptions, such as that your data is linearly separable (SVM).

I would also recommend the Random Forests algorithm as this is easy to implement and is relatively insensitive to training data size, but I would advise against using very small training data sizes.

The scikit-learn module contains these algorithms and is able to cope with large training data sizes, so you could increase the number of training data samples. the best way to know for sure would be to investigate them yourself, as suggested by @etov

此岸叶落 2024-12-10 06:29:10

如果你的“样本数据”是训练集,它看起来很小。我首先建议每堂课使用超过 15 个示例。

正如评论中所说,最好将算法与问题相匹配,这样您就可以简单地测试一下哪种算法效果更好。但首先,我建议使用 SVM:它比具有小型训练集的 KNN 效果更好,并且通常比 ANN 更容易训练,因为需要做出的选择较少。

If your "sample data" is the train set, it seems very small. I'd first suggest using more than 15 examples per class.

As said in the comments, it's best to match the algorithm to the problem, so you can simply test to see which algorithm works better. But to start with, I'd suggest SVM: it works better than KNN with small train sets, and generally easier to train then ANN, as there are less choices to make.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文