支持向量机(SVM)需要从原理层面编写和改进代码吗,还是只要用的特征够好就能达到很好的效果?(语言-python)

在图像分类任务上,支持向量机是否需要从原理层面编写代码和改进?还是说我只要提取的特征够明显,然后用Sklearn封装好的函数也能得到很高的准确率?希望得到有相关经验的回答

这里有几个不同层次的问题,不能笼统地说。
1)支持向量机是比较简单的分类方法。这里有两个意思,一是比较简单,因此只能用于比较简单的分类问题,虽然用核函数能改进分类效果,但与神经网络、深度学习相比,支持向量机的分类就只是一个简单的玩具了。二是普世分类算法,原理上说跟问题无关,不管是图像分类还是其它分类,也不管提取的是什么图像特征,它就是一个分类器。所以是否适合图像分类任务,要根据具体问题进行分析,但总的来说只是一个很简单的分类器。
参见:Python数模笔记-Sklearn(5)支持向量机 https://youcans.blog.csdn.net/article/details/116885068
2)因此,“只要提取的特征足够明显,用 sklearn 封装算法就能得到很高的准确率“,原理上说没错的。
3)由于支持向量机算法确实比较简单,对于图像分类问题而言,从支持向量机算法方向进行改进的效果可能不是很明显,因此直接使用 sklearn 封装函数问题不大。
4)相对来说,在提取图像特征方面多做一些工作,做的细一些,特别是注意提取对图像的亮度变化、对比度变化、姿态变化都具有较强鲁棒性的特征,比改进支持向量机算法会更加有效。

用的SVM对二维矩阵进行分类。SVM是传统的机器学习模型,特征提取和分类器构建是最重要的两步,这里面分类器的构建就是在调整SVM模型的参数,给一个我训练的SVM的例子如下:
mysvm =Pipeline([("scaler",StandardScaler()),("svm_clf",SVC(kernel='poly',degree=3,coef0=1,C=7))])
这里面,构建SVC函数就是在调整SVM的参数,kernel代表选用的核函数,这里是多项式函数,degree为多项式最高次数,这里是三次多项式,C代表允许的软间隔内的异常样本数量。

具体问题具体对待。
【机器学习】支持向量机 SVM(非常详细)
https://zhuanlan.zhihu.com/p/77750026

调参就行了,如果svm实在完成不了你的要求,还不如换个模型。
我这有个机器学习多种分类模型一键训练的demo,拿去用:
https://github.com/aiainui/ML_clf_demo