テストする必要がある一連のルールがあります。アイリス データセットを使用しており、生成されたルールは次のようになります。
ルール、クラス
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))
このコードは、各ルールがすべての行で実行されるデータ フレームを取得し、最後に列の合計、つまりその特定のルールによって正しく分類されたインスタンスの数を示します。