这是一个与https://stats.stackexchange.com/questions/21572/how-to-plot-decision-boundary-of-ak-nearest-neighbor-classifier-from-elements-o相关的问题
为了完整起见,这是该链接的原始示例:
library(ElemStatLearn)
require(class)
x <- mixture.example$x
g <- mixture.example$y
xnew <- mixture.example$xnew
mod15 <- knn(x, xnew, g, k=15, prob=TRUE)
prob <- attr(mod15, "prob")
prob <- ifelse(mod15=="1", prob, 1-prob)
px1 <- mixture.example$px1
px2 <- mixture.example$px2
prob15 <- matrix(prob, length(px1), length(px2))
par(mar=rep(2,4))
contour(px1, px2, prob15, levels=0.5, labels="", xlab="", ylab="", main=
"15-nearest neighbour", axes=FALSE)
points(x, col=ifelse(g==1, "coral", "cornflowerblue"))
gd <- expand.grid(x=px1, y=px2)
points(gd, pch=".", cex=1.2, col=ifelse(prob15>0.5, "coral", "cornflowerblue"))
box()
Run Code Online (Sandbox Code Playgroud)
我一直在玩这个例子,并希望尝试使用三个类.我可以用类似的东西改变g的某些值
g[8:16] <- 2
Run Code Online (Sandbox Code Playgroud)
只是假装有一些来自第三类的样本.但是,我不能让情节有效.我想我需要改变处理获胜类别投票比例的线:
prob <- attr(mod15, "prob")
prob <- …Run Code Online (Sandbox Code Playgroud) 我正在记录一些可供其他学生阅读的代码,knitr 似乎是一个很好的方法。困扰我的一点是,对于需要长时间运行的脚本,我的方法效率不高。
假设我有类似的东西
<!--begin.rcode example1, fig.width=8, fig.height=10
input <- data[,c("K12","K23","delta")]
output <- data[,"Class"]
startTime <- proc.time()
result <- C5.0(input, output)
totalTime <- proc.time()-startTime
cat("Execution time: ", totalTime[3], "\n")
plot(result)
result
end.rcode-->
Run Code Online (Sandbox Code Playgroud)
这将基于称为数据的数据框创建、绘制和打印决策树。我希望在一个 .Rhtml 文档中有几个这样的块,并且在每个块中我都会更改数据集或算法的参数。
如果数据集很大,调用C5.0会花费一些时间。如果我向同一个 .Rhtml 文件添加一些其他示例,我必须重新运行它才能创建 .html 文件和图形。我一直在重复执行此操作,因为我想对执行结果进行评论,并且为了创建 .html 文件,我需要再次编织 .Rhtml 文件,这意味着重新运行代码。
我正在寻找的是一种方法,要么告诉knitr它可以重用之前执行一个块的结果(除此之外,没有看到一种方法可以做到这一点,这似乎有风险并且是手动的),或者将.Rhtml分成可以的片段单独编织,但在需要时仍然制作整个 .html - 更好的是,类似于 knit 的“make”之类的东西,它只会重新运行更改后的 .Rhtml 并创建单个 .html 文件。顺便说一句,如果有人知道如何从命令行编织 .Rhtml 文件,这也可能很有用——我使用 RStudio 是为了方便,但单个命令行命令也会有所帮助。
我知道这看起来很主观,但我并不是在寻找更好的(主观上,“我的方法比你的方法更好”)的方法来完成任务——任何不需要重新运行整个 .Rhtml 页面的方法都可以。
谢谢