sklearn SVM实现中的C参数对位数敏感

问题描述

我一直在尝试使用sklearn和rbf kernal对SVM分类器进行超参数优化,并且很懒惰,我使用np.logspace创建了大量以对数间隔的C值:

tuned_parameters = [{'kernel': ['rbf'],'C': np.logspace(-5,-1),'class_weight': ['None','balanced']}]

clf = GridSearchCV(
    SVC(probability = True,max_iter=100000),tuned_parameters,scoring='precision_weighted',cv=3,)
clf.fit(X_train,y_train)
print(clf.best_estimator_)
y_pred = clf.predict(X_test)
cm = confusion_matrix(y_test,y_pred)
print(classification_report(y_test,y_pred))

由于最佳C值的有效位数大约为12位,因此我仅用第一位再次运行它,最后得到了完全不同的结果。看起来C的微小变化会使分类错误的样本数量产生非常大的非单调变化。实际上,看起来C中的位数在误分类中起着与实际C值一样大的作用。 一些示例(根据保留的数据计算出的精度):

C value             precision (macro avg)
0.00199999999          0.83
0.00189899991          0.86
0.002                  0.59
0.00200000001          0.83
1                      0.62
20                     0.62
2000                   0.63

任何人都可以帮助我了解这里发生的情况吗?这根本不是我理解错误分类惩罚应该表现出来的方式,而且我不确定现在如何进行超参数优化。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...