我一直在尝试构建这个程序或找出如何访问 KKNN 所做的工作以产生其结果。我正在使用 KKNN 函数和包来帮助预测未来的棒球统计数据。它包含 11 个预测变量(之前 3 年的统计数据、PA 和水平,以及年龄和另一个预测变量)。预测效果很好,但我希望做的是,当我只预测一名球员时(因为这在预测 100 名球员时会很荒谬),我希望看到可能与相关球员最近的 3 个邻居以及他们之前的统计他们明年生产的产品。我最关心最近邻居的名称,因为知道哪些玩家最接近将为它做出的预测提供背景信息。
如果这是获得这些功能的唯一方法,我可以尝试将实际代码编辑到函数中。即使找到索引也会有所帮助,因为我可以从那里反向求解以获取名称。非常感谢您的所有帮助!
这是一些应该有帮助的示例代码:
name=c("McGwire,Mark","Bonds,Barry","Helton,Todd","Walker,Larry","Pujols,Albert","Pedroia,Dustin")
z
lag1=c(100,90,75,89,95,70)
lag2=c(120,80,95,79,92,90)
Runs=c(65,120,105,99,65,100)
full=cbind(name,lag1,lag2,Runs)
full=data.frame(full)
learn=full
learn
learn$lag1=as.numeric(as.character(learn$lag1))
learn$lag2=as.numeric(as.character(learn$lag2))
learn$Runs=as.numeric(as.character(learn$Runs))
valid=learn[5,]
learn=learn[-5,]
valid
k=kknn(Runs~lag1+lag2,learn,valid,k=2,distance=1)
summary(k)
fit=fitted(k)
fit
这是我实际调用的函数,如果它可以帮助您定制解决方法的答案!
kknn(RVPA~(lag1*lag1LVL*lag1PA)+(lag2*lag2LVL*lag2PA)+(lag3*lag3LVL*lag3PA)+Age1+PAsize, RV.learn, RV.valid,k=86, distance = 1,kernel = "optimal")