我一直在使用KNN算法对事件进行分类,但是并没有带来很高的分类精度。一些同事告诉我,R中的tree ()
函数(来自tree
包)可以帮助解决这个问题。
这是我的数据样本。我试图根据前两列"ACTIVITY_X"
和"ACTIVITY_Y"
的值对不同的事件进行分类(我有8种不同的事件类别):
> 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"
数据不可用并且我只有{{1} }和"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()
任何帮助将不胜感激。我对R非常陌生,所以我希望其他用户仍然对这个问题感兴趣。
答案 0 :(得分:0)
我不确定我的数据结构是否与您的数据相同,但是错误对我来说是相同的:
Binary | X1 | X2
No | 6.3 | 8.3
Yes | 7.2 | 9.8
Yes | 5.0 | 3.8
x = tree(Binary ~ . , data)
强制性引入的不适用
对我来说,此错误是因为数据集中的“二进制”变量的格式为“字符”,而不是必需的“因子”格式
class(data$Binary)
"character"
data$Binary = as.factor(data$Binary)
class(data$Binary)
"factor"
此转换后,运行树函数不再产生错误。
答案 1 :(得分:0)
对此主题有些陈旧的评论,但是我认为R的较旧版本会在分配时自动分配因子,我认为这会更好。
答案 2 :(得分:-1)
是的,将变量从其他类(例如二进制,字符等)更改为因子,谢谢.. !!!
data$saleCAT <- as.factor(data_cat)
> class(train_data$saleCAT)
[1]“字符”
Sub CopyDataBetweenWorkbooks()
Dim wbSource As Workbook
Dim shTarget As Worksheet
Dim shSource As Worksheet
Dim strFilePath As String
Dim strPath As String
' Initialize some variables and
' get the folder path that has the files
Set shTarget = ThisWorkbook.Sheets("6")
strPath = GetPath
Filename = InputBox("What is the name of this File")
FileCount = InputBox("How many file are you looking for")
' Make sure a folder was picked.
If Not strPath = vbNullString Then
' Get all the files from the folder
'strfile = Dir$(strPath & "*.xlsx", vbNormal)
'Do While Not strfile = vbNullString
For FileNumber = 1 To FileCount Step 1
strfile = Filename & FileNumber & ".xlsx"
' Open the file and get the source sheet
Set wbSource = Workbooks.Open(strPath & strfile)
Set shSource = wbSource.Sheets("Points")
'Copy the data
Call CopyData(shSource, shTarget)
'Close the workbook and move to the next file.
wbSource.Close False
'strfile = Dir$()
Next 'FileNumber
'Loop
End If
End Sub
[1]“因素”