我的目标是创建所选k-最近邻居(分类技术)Ks的图形(直方图),通过留下一次交叉验证选择Ks(我有46行数据,所以应该有46个不同的K' s选择,其中许多将是相同的,但有些可能是不同的。)
我看到两种可能性。首先,RWeka(允许您与基于Java的Weka数据挖掘工具交互的包)IBk。我的问题(阅读更多信息):1)你认为有可能进入"黑盒子" R-Java接口使用Rweka的IBk功能提取我想要的数据? 2)R&#39的knn函数输出是什么意思? 3)我将把接收函数放在哪里放一个近似脚本以捕获每次运行的结果?
以下是我一直在尝试的事情:
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),然后将数字拉出来并不# 39;工作。没有更多的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的读数。如何将这些信息转换为我想象的图表?
提前谢谢!