[英]K Nearest Neighbor Cross Validation Output
我的目标是创建通过选定的k个近邻(分类技术)选择的k的图(直方图)(通过留一法交叉验证)(我有46行数据,因此应该选择46个不同的k,其中许多将被选择)相同,但可能有所不同。)
我看到两种可能性。 首先,是RWeka的(使您可以与基于Java的Weka数据挖掘工具进行交互的软件包)IBk。 我的问题(有关更多信息,请阅读):1)您认为可以使用Rweka的IBk函数进入R-Java界面的“黑匣子”以提取我想要的数据吗? 2)R的knn函数输出是什么意思? 3)在将“ sink”函数放到留一法逼近脚本中的哪个位置,以捕获每次运行的结果?
这是我一直在尝试的方法:
t1 <- IBk(class~., data=mydata, control=Weka_control(K=10, X=TRUE))
t1
X = TRUE使算法使用留一法交叉验证运行,并输出最佳分类器(K):
IB1 instance-based classifier using 5 nearest neighbour(s) for classification
据我所知,根据文档说明,X = TRUE是该算法运行交叉验证的唯一方法。 但是,这会导致出现黑匣子,而我看不到中间的值。 但是,即使可以,我也很难以非复制和粘贴的方式获取任何有意义的数据,因为输出是Java对象,因此将上述输出转换为字符串(toString),然后将其提取出来并没有。工作。 没有更多的Java知识(或几乎没有知识),除非你们中的一个熟悉Java并且有一个想法,否则我认为这是一场失败的战斗。
我的下一个选择是knn(在类库中),尝试使用类似以下内容的手动使用留出交叉验证:
x=1
y=2
while (y<11) {
while (x<47) {
train <- mydata[1:46 !=x,]
test <- mydata[x,]
t1 <- knn(train, test, train$class, k=y, use.all=TRUE)
x=x+1 }
y=y+1}
我会将每个读数存储到单个文件中,以备后用(不确定在何处放置该接收器,因此也将提出建议)。 但是,我不确定从knn函数(测试集的因子分类)中得到什么。 在我的三个班级中,我得到了0、1、2的读数。 我如何将这些信息变成我想象中的图表?
先感谢您!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.