问题描述
我正在研究用于分类的 SVC 模型,每次更改参数值(svc__gamma、svc__kernel 和 svc__C)时,我都面临不同的准确度结果,我阅读了 Sklearn 的文档,但我无法理解这些参数是什么意思是,我有三个问题:
- 这些参数表示什么?
- 每次更改它对准确度的影响如何?
- 什么是正确的参数值?
准确率的结果是 0.70,但是当我删除 svc__gamma 和 svc__C 时,结果增加到 0.76。
pipe = make_pipeline(TfidfVectorizer(),SVC())
param_grid = {'svc__kernel': ['rbf','linear','poly'],'svc__gamma': [0.1,1,10,100],'svc__C': [0.1,100]}
svc_model = gridsearchcv(pipe,param_grid,cv=3)
svc_model.fit(X_train,Y_train)
prediction = svc_model.predict(X_test)
print(f"Accuracy score is {accuracy_score(Y_test,prediction):.2f}")
print(classification_report(Y_test,prediction))
解决方法
到 1。
- gamma 是高斯钟形曲线的一个参数,所以它应该只 影响 RBF(高斯核)
- C 是优化问题的参数,拉格朗日乘数的倒数
到。 2.
- 熟悉数学背景,以充分了解它们如何影响您的准确性(旁注:准确性通常不是可靠的衡量标准,但取决于上下文)
到 3。
- 没有“正确”的参数。它们取决于上下文、数据和您想要实现的目标。通常在算法在测试数据上的效果与它在新数据上的效果(过度拟合与欠拟合)之间存在权衡
我希望这有助于作为第一步:) 如需更多信息,我建议SVM。