r - 使用树函数时出现“强制引入的 NA”错误
问题描述
我一直在使用 KNN 算法对事件进行分类,但这并没有带来高精度的分类。一些同事告诉我tree ()
,R 中的函数(来自tree
包)可以帮助解决这个问题。
这是我的数据示例。我正在尝试根据前两列的值对不同的事件(我有 8 种不同的事件类别)进行分类,"ACTIVITY_X"
并且"ACTIVITY_Y"
:
> print(dataset)
ACTIVITY_X ACTIVITY_Y Event
1: 19 21 Vigilance
2: 20 14 Vigilance
3: 34 35 Vigilance
4: 18 5 Vigilance
5: 23 27 Vigilance
---
426: 9 25 Vigilance
427: 0 0 Head-up
428: 0 0 Head-up
429: 3 3 Head-up
430: 0 0 Vigilance
理想情况下,我想在不同类别(抬头、警戒等)之间找到不同的阈值,这应该有助于在数据不可用且我只有数据时对它们进行"Event"
分类。我想我应该将该函数用作:"ACTIVITY_X"
"ACTIVITY_Y"
tree()
xtree <- tree(Head-up~ACTIVITY_X+ACTIVITY_Y,data=dataset)
plot(xtree)
title("Head_up")
text(xtree)
xtree <- tree(Vigilance~ACTIVITY_X+ACTIVITY_Y,data=dataset)
plot(xtree)
title("Vigilance")
text(xtree)
etc..
但是,我在运行分析时遇到了不同的错误,主要错误是"NAs introduced by coercion"
. 当我使用该rpart()
函数时,这些错误是不存在的,这也是一种分类算法。
> xtree <- tree(Vigilance~ACTIVITY_X+ACTIVITY_Y,data=dataset)
Warning message:
In tree(Vigilance ~ ACTIVITY_X + ACTIVITY_Y, data = dataset) :
NAs introduced by coercion
> plot(xtree)
Error in plot.tree(xtree) : cannot plot singlenode tree
> title("Vigilance")
Error in title("Vigilance") : plot.new has not been called yet
> text(xtree)
Error in text.tree(xtree) : cannot plot singlenode tree
任何帮助,将不胜感激。我对 R 很陌生,所以我希望这个问题仍然对其他用户感兴趣。
解决方案
我有点不确定我的数据结构是否与您的相同,但错误对我来说是相同的:
Binary | X1 | X2
No | 6.3 | 8.3
Yes | 7.2 | 9.8
Yes | 5.0 | 3.8
x = tree(Binary ~ . , data)
强制引入的 NA
对我来说,这个错误是因为数据集中的“二进制”变量是“字符”格式而不是所需的“因子”格式
class(data$Binary)
"character"
data$Binary = as.factor(data$Binary)
class(data$Binary)
"factor"
在此转换之后,运行树函数不再给出错误。
推荐阅读
- python - 如何使用熊猫数据框 set_index()
- c# - 如何调试仅在 .NET Native 工具链中出现的 KernelBase.dll 中的异常
- sql - ORA-00936: Oracle 11g 中的 DELETE 语句和视图缺少表达式
- html - 如何将新的 { @class = "form-control } 添加到 MVC 视图
- javascript - 使用 joi 进行 Multer 验证
- kotlin - 在 Kotlin 中使用 Coroutine 时如何保证获取最新数据?
- mvvm - 我应该在哪里为 SwiftUI 中的视图创建模型实例?
- c++ - 我是否应该添加 c1 中的所有值以获得答案 10?
- kubernetes - 用于调试 kubeflow/pipeline/helloworld 的 dockershim 和相关日志在哪里
- java - 将 byte[] 中的 JPEG2000 图像转换为 BufferedImage 对象