R中e1071包SVM线性核模型summary无Gamma参数问题求助
问题解答
为什么线性核SVM的summary不显示Gamma参数?
线性核的数学表达式是K(xi, xj) = xi·xj,这个公式里不需要Gamma参数——Gamma是径向基(RBF)、多项式、sigmoid等非线性核的专属参数,用来控制核函数的作用范围。所以e1071包的summary.svm函数默认不会为线性核展示Gamma参数,这是正常行为,既不是bug也不需要额外安装包。
让summary显示Gamma参数的解决方案
如果你确实需要在summary输出里看到Gamma参数,可以用以下两种方法:
方法1:拟合模型时手动指定Gamma参数
即使线性核用不到Gamma,你也可以在调用svm()时显式设置gamma参数,这样summary就会把它展示出来:
model = svm(Species~., data = iris, kernel = "linear", gamma = 1/ncol(iris[,1:2])) summary(model)
这里gamma = 1/ncol(iris[,1:2])是e1071包默认的Gamma计算方式(特征数的倒数),你也可以设置成其他数值。
运行后summary的Parameters部分会新增Gamma行:
Parameters: SVM-Type: C-classification SVM-Kernel: linear cost: 1 gamma: 0.5
方法2:直接查看模型对象中的Gamma值
如果你只是想确认Gamma的取值,不需要修改summary输出,可以直接从模型对象中提取:
# 查看Gamma值 model$gamma
对于线性核,即使你没手动设置,模型内部也会有默认的Gamma值(默认是1/特征数),只是summary没展示而已。
额外说明
- 不需要安装任何额外包,e1071本身就支持这些操作。
- 线性核使用Gamma参数不会影响模型结果,因为线性核的计算逻辑里根本不会调用这个参数,它只是被存储在模型对象中而已。
内容的提问来源于stack exchange,提问作者codenlearn
相关产品推荐
相关产品推荐

