开发者

What's the difference between ANN, SVM and KNN classifiers?

开发者 https://www.devze.com 2023-04-02 11:00 出处:网络
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 t开发者_运维问答he features from regions such as

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 t开发者_运维问答he 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?


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


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号