Данные обучения считываются из двух файлов: один только с независимыми переменными (df.train), а другой — только с фактическими соответствующими значениями класса (df.churn). Эти значения только -1 и 1. Затем я удаляю все столбцы NA и удаляю повторяющиеся столбцы, если они найдены.
Я собираю два набора данных в один кадр данных с независимыми значениями и значениями класса и запускаю naiveBayes() без ошибок и.
Используя модель, созданную naiveBayes, я запускаю функцию predict() и замечаю, что выходные данные с type = «raw» выглядят как разумные данные — в большинстве случаев эти вероятности относительно близки к 0 или 1. Я показываю первые 6 элементов ниже.
Я ищу фактические значения предсказанного класса для ввода в предсказание () с целью получения графика ROC и значения AUC. Я снова запускаю функцию predict() с типом = "class", и здесь я практически ничего не получаю.
df.train <- read.csv('~/projects/kdd_analysis/data/train_table.csv', header=TRUE, sep=',')
df.churn <- read.csv('~/projects/kdd_analysis/data/sm_churn_labels.csv', header=TRUE, sep=',')
df.train <- df.train[,colSums(is.na(df.train))<nrow(df.train)]
df.train <- df.train[!duplicated(lapply(df.train,c))]
df.train_C <- cbind(df.train, df.churn)
mod_C <- naiveBayes(V1~., df.train_C, laplace=0.01)
pre_C <- predict(mod_C, df.train ,type="raw", threshold=0.001)
Я преднамеренно запускаю функцию predict() для обучающих данных, потому что подумал, что это будет интересно. Ниже значения, полученные из предсказать(), кажутся мне "разумными"... то есть, по крайней мере, они не кажутся полной ерундой. Я еще не сравнивал их с фактическими значениями и ожидаю, что для этого будут использоваться явные значения класса, заданные с помощью функции predict().
head(pre_C)
-1 1
[1,] 9.996934e-01 3.066321e-04
[2,] 9.005501e-07 9.999991e-01
[3,] 1.000000e+00 3.468739e-11
[4,] 9.362914e-01 6.370858e-02
[5,] 9.854649e-01 1.453510e-02
[6,] 9.997680e-01 2.320003e-04
Итак, это предсказывает () снова запускает ту же модель - я не понимаю, как это возможно, чтобы она ничего не возвращала:
> pre_C <- predict(mod_C, df.train ,type="class", threshold=0.001)
> pre_C
factor(0)
Levels: