问题描述
可以帮我吗?
我用相同的根号插入符号获得了不同的结果。例如:
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 (将#修改为@)