Нахождение диапазона показателей классификации с помощью ROCR в R, когда вывод не отображает все результаты - PullRequest
0 голосов
/ 05 мая 2020

Добрый день, я пытаюсь разработать логистическую c классификацию с хорошим процентом отсечения c логистики, чтобы предсказать, является ли электронное письмо спамом. Данные поступают из csv-файла спама. Я использую ROCR для построения своих пороговых значений. Я хочу, чтобы порог состоял из 10-15% ложных срабатываний и около 90-95% истинных срабатываний. Однако вывод в R не показывает все значения, поэтому я не могу найти альфа-значения, которые соответствовали бы моему порогу классификации. Я пытался найти диапазон значений, но все время получаю сообщение об ошибке.

Ошибка, при которой (Spamper@x.values> 80 & Spamper@x.values <9): объект (list) не может быть приведен к типу 'double' </strong>

Может ли кто-нибудь помочь найти диапазон значений, который я ищу? Ниже приведен мой код.

library(ISLR)
library(caret)
library(faraway)
library(ROCR)
library(MASS)
library(glmnet)
Spam <- read.csv("C:\\Users\\19194\\Desktop\\BUDA 535\\spam.csv")
Spam$spam <- as.factor(Spam$spam)
dim(Spam)

set.seed(0)
Spamtest <- sample(dim(Spam)[1], 500, replace=FALSE)
Spambin <- glm(spam~., family = "binomial", Spam)

summary(Spambin)

probs <- ilogit(predict(Spambin))
spamROC <- prediction(probs, Spam$spam)
Spamper <- performance(spamROC, "tpr", "fpr")
Spamper
plot(Spamper)

Однако результаты, которые я получаю, когда запускаю "Spamper" для значений x, будут [833] 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,004135868006 ] 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 [849] 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 [857] 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 0,0035868006 [865] 0,0035868006 0,0039454806 0,0039454806 0,0039454806 0,0039454806 0,0039454806 0,0039454806 0,0039454806 [873] 0,0043041607 0,0043041607 0,0043041607 0,0046628407 0,0046628407 0,0046628407 0,0046628407 0,0053802009 [881] 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 [889] 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 [ 897] 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 [905] 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0053802009 0,0057388809 [913] 0,0057388809 0,0057388809 0,0057388809 0,0057388809 0,0057388809 0,0057388809 0,0057388809 0,0057388809 [921] 0,0057388809 0,0057388809 0,0057388809 0,0060975610 0,0060975610 0,0060975610 0,0060975610 0,0060975610 [929] 0,0060975610 0,0060975610 0,0060975610 0,0064562410 0,0064562410 0,0064562410 0,0064562410 0,0064562410 [937] 0,0064562410 0,0064562410 0,0064562410 0,0064562410 0,0064562410 0,0064562410 0,0064562410 0,0064562410 [945] 0,0064562410 0,0064562410 0,0064562410 0,0064562410 0,0068149211 0,0068149211 0,0068149211 0,0068149211 [953] 0,0068149211 0,0068149211 0,0068149211 0,0068149211 0,0068149211 0,0068149211 0,0068149211 0,0068149211 [961] 0,0068149211 0,0068149211 0,0068149211 0,0068149211 0,0068149211 0,0071736011 0,0071736011 0,0075322812 [969 ] 0,007 5322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 [977] 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 [985] 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 0,0075322812 [993] 0,0078909613 0,0078909613 0,0078909613 0,0078909613 0,0078909613 0,0078909613 0,0078909613 0,0078909613 [достиг getOption ( «max.print» ) - пропущено 2989 записей]

Итак, я попытался запустить код раньше, чтобы увидеть, что я могу получить с значениями x в диапазоне от .10 до .15

set = which(Spamper@x.values > 10 & Spamper@x.values < 15)
Spamper@x.values[set]
Spamper@alpha.values
Spamper@y.values

Но как указывалось ранее, запуск последнего фрагмента приводит к этому сообщению об ошибке.

Ошибка, при которой (Spamper@x.values> 10 & Spamper@x.values <15): объект (list) не может быть приведен к типу 'double '</strong>

...