包CARET:具有相同语法的不同输出方法:“ knn”和“ mlpKerasDecay”

问题描述

可以帮我吗?

我用相同的根号插入符号获得了不同的结果。例如:

model = caret::train(y ~.,data = train_set,method = 'mlpKerasDecay',preProc = "range",trControl = fitControl)

输出:predict(model)

   [9] -1.504384160 -0.327290207  0.167853981 -0.880181074  0.177923009  0.091040477 -0.188434765  0.202333793
  [17]  0.723083436 -0.186078161  0.158884823 -1.461138010  0.164124057  0.161260575  0.060420953 -2.196595907
  [25] -0.450853169 -1.209836602 -1.148020625 -0.028707385  0.272781074 -1.504384160 -0.327290207  0.167853981
  [33] -0.880181074  0.177923009  0.124389857 -0.246523201 -0.188434765  0.202333793  0.723083436 -0.186078161
  [41]  0.158884823 -1.461138010  0.164124057  0.161260575  0.161932811  0.148020968  0.127041399 -1.209836602
  [49] -1.148020625 -0.336488754  0.272781074  0.167853981 -0.880181074  0.177923009  0.124389857  0.091040477 

但是使用KNN:

model = caret::train(y ~.,method = 'knn',trControl = fitControl) 

输出:predict(model)

  [13] 12.61154 12.36686 12.46844 12.20607 12.42922 12.48749 12.46844 12.46844 12.46844 12.38839 12.42014 12.72458
  [25] 12.51090 12.73310 12.62519 12.37846 12.56763 12.72633 12.53659 12.61154 12.61154 12.61154 12.20607 12.53715
  [37] 12.46844 12.20607 12.42922 12.48749 12.46844 12.46844 12.46844 12.38839 12.55076 12.34583 12.38839 12.73310
  [49] 12.62519 12.67508 12.56763 12.61154 12.61154 12.61154 12.20607 12.36686 12.46844 12.20607 12.42922 12.46844 

如您所见,数量级是不同的。 我的问题:

为什么?

我该怎么做才能反转多层感知器中的比例?

我尝试了convert_response()(来源:preProc = c("center","scale") meaning in caret's package (R) and min-max normalization) 但是结果似乎与KNN的结果不一致。

好吧,我可以按组件逐步创建一个keras模型,但是我该如何解决呢?

编辑: 一个应用示例:

库:

library(caret)
library(keras)
library(plyr)
library(recipes)
library(tensorflow)
library(dplyr) 

设置:

fitControl = trainControl(method = "repeatedcv",number = 5,repeats = 5)
train_set = structure(list(y = c(12.5061772379805,12.3883942023241,12.7656884334656,12.6760762747759,12.4292161968444,12.6115377536383),banos = c(1,1,1),lon = c(-70.65409,-70.6471,-70.64788,-70.64177,-70.67638,-70.64213),lat = c(-33.43636,-33.43623,-33.45287,-33.44923,-33.43112,-33.44331)),row.names = c(2L,4L,7L,8L,10L,11L),class = "data.frame")

您将收到以下警告: Warning in preProcess.default(thresh = 0.95,k = 5,freqCut = 19,uniqueCut = 10,:No variation for for: banos。但是,这是我完整数据帧dim(train_set) = 8202 63的一部分[是的,我必须清理它(还)]

运行:

set.seed(1234)
model = caret::train(y ~.,method = "mlpKerasDecay",trControl = fitControl)
predict(model)

结果(可能会在您的计算机中更改):

-0.6769148 -0.7869630 -1.0850035 -1.1153764 -0.2204445 -0.9990849

问题出在这里,因为y的范围(在train_set中)为[12,13],但在这里似乎已归一化。

已用时间(使用i7第十代Intel-RTX 2080):

$everything
   user  system elapsed 
 209.39   13.01  961.49 

$final
   user  system elapsed 
   0.73    0.01    3.86 

祝你一周愉快!

亲切的问候, 米尔科。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)