首页 > 解决方案 > 解释 SVC 和 GridSearch 结果

问题描述

我正在研究使用scikit-learn svm svc作为模型的纹理分类器。我对我得到的一些结果有点困惑,主要是为什么参数gammaC的选择对我的结果有如此大的影响。所以这里是我的案例的简短描述:

我总共有 195 张图像,分为 8 类,如下所示;木材 - 56,大理石 - 23,水泥 - 16,混凝土 - 7,瓷砖 - 32,地毯 - 18,砖 - 25,织物 - 18。

我以 80-20 的比例将我的数据随机分为训练集和测试集。

我使用 SVC 作为模型:model = SVC(C=C, random_state=42, gamma=gamma)

我用训练数据拟合我的模型。接下来,我为我的测试数据预测类别,并使用准确度(正确预测的比率)作为分数。

对于Cgamma的不同选择,我的分数如下所示:

对于C=100和变化的gamma

| gamma | 1e-3|1e-2|1e-1| 1e0| 1e1| 1e2| 1e3| 1e4| | score | 0.28|0.28|0.29|0.36|0.54|0.76|1.00|1.00|

对于固定的gamma=10和变化的C

| C |1e-1| 1e0| 1e1| 1e2| 1e3| 1e4| 1e5| 1e6| | score | 0.28|0.29|0.37|0.54|0.67|0.83|0.97|1.00|

正如所见,分数随着Cgamma的增加而增加。

首先,我认为大Cgamma的结果太“完美”了。它具有 100% 的准确度。据我了解 C 的影响,C越大,它越适合训练数据,但模型越不“平滑”。我想您可以将结果解释为训练和测试数据非常相似,因此较大的C值将导致较高的准确性。如果我们将gamma视为每个 train item 的反影响半径,也可以得出结论,train 和 test 数据可能非常相似。

另一方面,当我使用GridSearchCV调整参数时,我得到了结果:

图片在这里

最好的The best parameters are {'C': 100000.0, 'gamma': 10.0} with a score of 0.46

我如何解释这个 0.46 的分数?对我来说,与我测试时得到的准确度结果相比,它似乎非常低。

标签: scikit-learnclassificationsvmgrid-search

解决方案


推荐阅读