Реализация K ближайших соседей с каретой в R - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь построить базовую модель KNN для этого набора данных в R с использованием каретки, однако, похоже, она не работает (или, может быть, так и есть?). В конце в таблице путаницы она только выдает «нет».прогнозы, нет «да», что кажется неправильным.Как вы делаете это правильно?

https://archive.ics.uci.edu/ml/datasets/Bank+Marketing

> data <- read.csv("bank-additional.csv", sep=";")
> trainIndex <- createDataPartition(data$y, p=0.7, list=FALSE, times=1)
> creditTrain <- data[trainIndex,]
> creditTest <- data[-trainIndex,]
> View(creditTrain)
> View(creditTest)
> scaler <- preProcess(creditTrain, method=c("center", "scale"))
> creditTrain <- predict(scaler, creditTrain)
> creditTest <- predict(scaler, creditTest)
> knnModel <- train(y ~ age + job + education + default, data = data, method="knn")
> creditTestPredictions <- predict(knnModel, creditTest)
> confusionMatrix(creditTestPredictions, creditTest$y)
Confusion Matrix and Statistics

          Reference
Prediction   no  yes
       no  1100  135
       yes    0    0

               Accuracy : 0.8907          
                 95% CI : (0.8719, 0.9075)
    No Information Rate : 0.8907          
    P-Value [Acc > NIR] : 0.5229          

                  Kappa : 0               
 Mcnemar's Test P-Value : <2e-16          

            Sensitivity : 1.0000          
            Specificity : 0.0000          
         Pos Pred Value : 0.8907          
         Neg Pred Value :    NaN          
             Prevalence : 0.8907          
         Detection Rate : 0.8907          
   Detection Prevalence : 1.0000          
      Balanced Accuracy : 0.5000          

       'Positive' Class : no              

> 

1 Ответ

0 голосов
/ 04 марта 2019

Это очень несбалансированный набор данных, поэтому я не удивлюсь, если ваш обученный алгоритм предсказывает нет для всех случаев.

Как это исправить, остается нетривиальной темой.Я могу перечислить несколько возможностей.Наиболее распространенным является использование перекрестной проверки.Может не всегда работает, но не мешает попробовать.Или вы можете использовать некоторые штрафы для корректировки цели оптимизации, в настоящее время вы только оптимизируете точность.В-третьих, вы можете увеличить выборку недопредставленного класса до сбалансированного уровня.

...