研究 R 中的预测函数
Looking into the predict function in R
我试图了解在使用 R 包 kernlab 中的命令 ksvm 时 SVM 预测函数是如何工作的。
我尝试使用以下命令查看预测函数:
methods(class="ksvm")
getAnywhere(ksvm:::predict)
但是,我得到以下输出而不是完整的预测函数:
A single object matching ‘:::’ ‘ksvm’ ‘predict’ was found
It was found in the following places
package:base
namespace:base
with value
function (pkg, name)
{
pkg <- as.character(substitute(pkg))
name <- as.character(substitute(name))
get(name, envir = asNamespace(pkg), inherits = FALSE)
}
<bytecode: 0x00000000088be4f8>
<environment: namespace:base>
Warning message:
In find(x, numeric = TRUE) :
elements of 'what' after the first will be ignored
有人可以帮助了解如何获得完整的预测功能吗?
更新 1:
来自 拼写错误 的建议在 kernlab 包中的 ksvm 预测功能上运行良好,但似乎不适用于 e1071 包中的 svm。
它抛出以下错误:
> getMethod("predict", "svm")
Error in getMethod("predict", "svm") :
no generic function found for 'predict'
一般来说,如何知道使用哪个get方法?
你很接近。我能够通过 getMethod("predict", "ksvm")
获取功能代码。这个描述 S4 方法调度的答案很有帮助。 View source code for function
根据你更新的问题,我可以使用 :::
函数获取 predict.svm
的源代码。特别是 e1071:::predict.svm
。上面的 link 在 S3 方法调度部分也对此进行了描述。
这里至少发生了几件事。首先是,在前一种情况下,您正在处理后者的 S4 对象和 S3 对象。这两个系统有不同的方法调度和不同的查看源代码的方式。另一个问题是 predict.svm 函数是一个不可见函数,只能使用 :::
或 getAnywhere()
.
查看
我试图了解在使用 R 包 kernlab 中的命令 ksvm 时 SVM 预测函数是如何工作的。
我尝试使用以下命令查看预测函数:
methods(class="ksvm")
getAnywhere(ksvm:::predict)
但是,我得到以下输出而不是完整的预测函数:
A single object matching ‘:::’ ‘ksvm’ ‘predict’ was found
It was found in the following places
package:base
namespace:base
with value
function (pkg, name)
{
pkg <- as.character(substitute(pkg))
name <- as.character(substitute(name))
get(name, envir = asNamespace(pkg), inherits = FALSE)
}
<bytecode: 0x00000000088be4f8>
<environment: namespace:base>
Warning message:
In find(x, numeric = TRUE) :
elements of 'what' after the first will be ignored
有人可以帮助了解如何获得完整的预测功能吗?
更新 1:
来自 拼写错误 的建议在 kernlab 包中的 ksvm 预测功能上运行良好,但似乎不适用于 e1071 包中的 svm。
它抛出以下错误:
> getMethod("predict", "svm")
Error in getMethod("predict", "svm") :
no generic function found for 'predict'
一般来说,如何知道使用哪个get方法?
你很接近。我能够通过 getMethod("predict", "ksvm")
获取功能代码。这个描述 S4 方法调度的答案很有帮助。 View source code for function
根据你更新的问题,我可以使用 :::
函数获取 predict.svm
的源代码。特别是 e1071:::predict.svm
。上面的 link 在 S3 方法调度部分也对此进行了描述。
这里至少发生了几件事。首先是,在前一种情况下,您正在处理后者的 S4 对象和 S3 对象。这两个系统有不同的方法调度和不同的查看源代码的方式。另一个问题是 predict.svm 函数是一个不可见函数,只能使用 :::
或 getAnywhere()
.