我在SVM上使用参数搜索对469个训练样例和136个特征的数据集进行了标记{1,2,3,4},使用Scikit-Learn进行分类问题 .

我期望每个SVM实现的结果与它们各自的参数是唯一的,但是得到了不同的结果 .

结果如下:对于'rbf'内核,精度始终为27.5%,而'poly'内核的精度始终为90.8%,与参数无关 .

Score: 0.27505330490405117  Parameters: {'C': 1, 'gamma': 0.001, 'kernel': 'rbf'}
Score: 0.27505330490405117  Parameters: {'C': 1, 'gamma': 0.0001, 'kernel': 'rbf'}
Score: 0.27505330490405117  Parameters: {'C': 10, 'gamma': 0.001, 'kernel': 'rbf'}
Score: 0.27505330490405117  Parameters: {'C': 10, 'gamma': 0.0001, 'kernel': 'rbf'}
Score: 0.27505330490405117  Parameters: {'C': 100, 'gamma': 0.001, 'kernel': 'rbf'}
Score: 0.27505330490405117  Parameters: {'C': 100, 'gamma': 0.0001, 'kernel': 'rbf'}
Score: 0.27505330490405117  Parameters: {'C': 1000, 'gamma': 0.001, 'kernel': 'rbf'}
Score: 0.27505330490405117  Parameters: {'C': 1000, 'gamma': 0.0001, 'kernel': 'rbf'}
Score: 0.908315565031983    Parameters: {'C': 1, 'gamma': 0.001, 'kernel': 'poly'}
Score: 0.908315565031983    Parameters: {'C': 1, 'gamma': 0.0001, 'kernel': 'poly'}
Score: 0.908315565031983    Parameters: {'C': 10, 'gamma': 0.001, 'kernel': 'poly'}
Score: 0.908315565031983    Parameters: {'C': 10, 'gamma': 0.0001, 'kernel': 'poly'}
Score: 0.908315565031983    Parameters: {'C': 100, 'gamma': 0.001, 'kernel': 'poly'}
Score: 0.908315565031983    Parameters: {'C': 100, 'gamma': 0.0001, 'kernel': 'poly'}
Score: 0.908315565031983    Parameters: {'C': 1000, 'gamma': 0.001, 'kernel': 'poly'}
Score: 0.908315565031983    Parameters: {'C': 1000, 'gamma': 0.0001, 'kernel': 'poly'}

我有理由认为数据及其各自的标签必须标准化或处理 . 结果表现出来的可能原因是什么?

我的参数搜索的代码如下:

tuned_parameters = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4],
                     'C': [1, 10, 100, 1000]},
                    {'kernel': ['poly'], 'gamma': [1e-3, 1e-4],
                     'C': [1, 10, 100, 1000]}]
svc = SVC()                    # From Scikit-Learn
clf = GridSearchCV(svc, tuned_parameters)
clf.fit(X_temporary, y_cue_temporary)
means = clf.cv_results_['mean_test_score']
parameters = clf.cv_results_['params']
for mean, param in zip(means, parameters):
    print("Score: {}\tParameters: {}".format(mean, param))