r - 如何访问 R 中 predict() 函数的值进行存储?
问题描述
我正在为一个班级训练一个 K-最近邻模型。问题是他们要求我们用整个数据库训练它,除了被预测的行。
我的计划是初始化一个用于存储的向量并运行一个 for 循环来遍历每一行,省略该特定行进行训练,然后将预测值附加到向量,并在循环后计算精度:
results <- c()
for (i in nrow(data) {
model.kknn <- train.kknn(data[-i,11]~., data = data[-i,1:10],kmax = 7, scale = TRUE)
pred <- predict(model,data[i,1:10])
results <- c(results,pred)
}
我期望向量results
是一系列 1 和 0。但是,我尝试只循环第一行,而值为results
is 2
。
打印时pred
的值为:
[1] 1
Levels: 0 1
知道如何让 1 附加到向量results
吗?
解决方案
在 for() 部分指定1:N
,最好不要“增长”一个向量,而是初始化一个适当长度的空向量并填充。
N <- nrow(data)
results <- vector(length=N)
for (i in 1:N) {
model.knn <- train.kknn(data[-i,11]~., data=data[-i,1:10], kmax=7, scale=T)
results[i] <- predict(model.knn, data[i,1:10,drop=F])
}
推荐阅读
- asp.net - 替换 Azure Blob 存储中的文件时出现错误 500
- python - ValueError:预期可迭代原始文本文档,接收到字符串对象。使用 tfidf 和选择功能预测新的测试数据
- javascript - 从Dojo中的Checked Multi Select(“dojox.form.CheckedMultiSelect”)中选择选项时如何编写条件?
- kubernetes - 启用 istio 时 Postgres Kubernetes Helm 图表失败
- mysql - 如果值为 x 或 y,则 MySQL 更新
- java - 如何将类传递给 Kotlin 中的函数
- c++ - QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- android - DatabaseReference 'setValue' Android Studio 显示错误
- android - 收到错误 android.util.SuperNotCalledException: Activity {} 没有调用 super.onCreate()
- asp.net - 文本未在材料 UI 核心中选择下拉列表的中心垂直对齐