分类模型的参数产生不同的结果

问题描述

我正在研究用于分类的 SVC 模型,每次更改参数值(svc__gamma、svc__kernel 和 svc__C)时,我都面临不同的准确度结果,我阅读了 Sklearn 的文档,但我无法理解这些参数是什么意思是,我有三个问题:

  1. 这些参数表示什么?
  2. 每次更改它对准确度的影响如何?
  3. 什么是正确的参数值?

准确率的结果是 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...