svm.SVC非线性情况下的参数怎么查看
时间: 2024-10-08 13:26:30 浏览: 31
当你使用`svm.SVC()`在非线性模式下(例如通过传递一个核函数,如`kernel='poly'`, `'rbf'` 或 `'sigmoid'`等),SVC并不会像线性模式那样直接提供系数(weights)和截距(bias)。这是因为非线性SVM通过内核技巧将原始数据映射到了高维空间,使得原本线性不可分的问题变得线性可分。
在这种情况下,查看模型参数主要是关于以下几个方面:
1. **内核函数参数**:对于非标准的内核(如多项式、高斯径向基函数RBF或sigmoid等),你需要关注的是特定内核的参数。例如,`kernel='rbf'`中有`gamma`参数,它控制了RBF函数的宽度;`kernel='poly'`中有`degree`, `coef0` 和 `gamma` 参数,分别决定多项式的次数、常数项以及内核宽度。
```python
from sklearn.svm import SVC
model = SVC(kernel='rbf', gamma='scale') # 'scale' 使用1/n_features作为gamma的估计
model.fit(X_train, y_train)
print(model.get_params())
```
2. **内核矩阵**:虽然不是参数本身,但是你可以查看`model.kernel_matrix`来理解模型在高维空间中的决策结构,但这通常是内部使用的数值信息,不适合直接解读。
3. **支持向量**:非线性SVM同样依赖于支持向量(support vectors),这可以通过`model.support_vectors_`获取,它们是决定分类边界的实例。
4. **决策函数**:你可以通过`model.decision_function(X)`来观察每个样本在高维空间中的位置,尽管这不是参数,但能帮助理解模型决策过程。
需要注意的是,查看这些参数可以帮助你理解模型是如何工作的,但在许多情况下,由于内核函数的作用,我们不需要关心具体的系数或偏置。
阅读全文