【发布时间】:2019-10-07 07:24:07
【问题描述】:
我正在构建一个 KNN 模型来预测房价。我将检查我的数据和模型,然后是我的问题。
数据 -
# A tibble: 81,334 x 4
latitude longitude close_date close_price
<dbl> <dbl> <dttm> <dbl>
1 36.4 -98.7 2014-08-05 06:34:00 147504.
2 36.6 -97.9 2014-08-12 23:48:00 137401.
3 36.6 -97.9 2014-08-09 04:00:40 239105.
型号 -
library(caret)
training.samples <- data$close_price %>%
createDataPartition(p = 0.8, list = FALSE)
train.data <- data[training.samples, ]
test.data <- data[-training.samples, ]
model <- train(
close_price~ ., data = train.data, method = "knn",
trControl = trainControl("cv", number = 10),
preProcess = c("center", "scale"),
tuneLength = 10
)
我的问题是时间泄漏。我正在使用后来关闭的其他房屋对房屋进行预测,而在现实世界中,我不应该访问该信息。
我想对模型应用一条规则,即对于每个值 y,仅使用在该 y 之前关闭的房屋。我知道我可以在某个日期拆分我的测试数据和我的训练数据,但这并不能完全做到。
是否可以在caret 或其他knn 库(如class 和kknn)中防止这种时间泄漏?
【问题讨论】:
-
你能做一个可重现的例子吗? stackoverflow.com/questions/5963269/…
标签: r machine-learning r-caret knn