1

我有一组需要测试的规则。我正在使用 iris 数据集,生成的规则是这样的:

规则,等级

PetalLength > 2.45 AND PetalWidth <= 1.7,杂色 PetalWidth > 0.8 AND PetalLength <= 4.75,杂色

我现在想通过数据集传递每个规则,并获得一个数据框,其中我的行是数据集的记录,列是规则,当每个规则通过记录时,如果规则正确分类记录,它给出的分数为 1,否则该记录的分数为 0,并且这些值存储在每一行的数据框中。我希望在通过每条规则后取一个行总和,如果行总和超过某个值(比如 3),那么规则的通过就会停止。

到目前为止,我已经编写了一个通过数据集运行每个规则的代码,并给出了特定规则正确分类的实例数,但我不确定如何编写这方面的代码。有人可以帮我吗?

countfn <- function (x) {   
library(sqldf)   
return(print(sqldf(x)))}
dataset=iris
####The names alone are modified 
names(dataset) = c("SepalLength", "SepalWidth" , "PetalLength", "PetalWidth",  "Species")
####Reading the rules file to R 
rulefin = read.csv("FinalRules.csv", header=TRUE, sep=",",strip.white = TRUE) 
library(sqldf)
library(stringr)
####Query to see how many instances for a specific class are correctly classified by the rule
query=data.frame(paste('select count(*) from dataset where',rulefin$Rule,'  and Species
> =','\'',rulefin$Class),'\'',sep="")) 
library(data.table)
####Creating a table to store the number of correctly classified instances
df1=data.table(apply(query,1,countfn))

这段代码为我提供了一个数据框,其中每个规则都贯穿所有行,最后给出了列总和,即由该特定规则正确分类的实例数。

4

0 回答 0