我如何在R中使用插入符号绘制多标签SVM问题的决策边界

时间:2019-05-27 06:54:31

标签: r machine-learning plot svm r-caret

我已经使用R的插入符号包构建了SVM模型:

set.seed(1234567)


SVM_caret <- train(x = x_train, y = y_train$label, 
               method = "svmLinear", tuneGrid = expand.grid(
              C = c(0.001, 0.01, 0.1, 1)),
              metric = "ROC",
              trControl = trainControl(method = "cv", number = 3, classProbs = T),
              maxit = 100)

我尝试实现this代码以绘制模型的决策范围,但出现了一些错误。这是模型的混淆矩阵:

Confusion Matrix and Statistics

          Reference
Prediction class_1 class_2 class_3 class_4
   class_1       9       0       0       0
   class_2       0       7       0       0
   class_3       3       0       6       0
   class_4       0       0       0       7

Overall Statistics

               Accuracy : 0.9062          
                 95% CI : (0.7498, 0.9802)
    No Information Rate : 0.375           
    P-Value [Acc > NIR] : 5.706e-10       

                  Kappa : 0.8743          

 Mcnemar's Test P-Value : NA              

Statistics by Class:

                     Class: class_1 Class: class_2 Class: class_3 Class: class_4
Sensitivity                  0.7500         1.0000         1.0000         1.0000
Specificity                  1.0000         1.0000         0.8846         1.0000
Pos Pred Value               1.0000         1.0000         0.6667         1.0000
Neg Pred Value               0.8696         1.0000         1.0000         1.0000
Prevalence                   0.3750         0.2188         0.1875         0.2188
Detection Rate               0.2812         0.2188         0.1875         0.2188
Detection Prevalence         0.2812         0.2188         0.2812         0.2188
Balanced Accuracy            0.8750         1.0000         0.9423         1.0000

有4个类可以预测,我不知道是否真的有可能构建此图,但是我不知道如何完成它。是否有任何功能或方法可以可视化此决策边界?

由于我不能只复制粘贴数据到这里,因此我将在Google驱动器上添加指向它的链接,因此您可以下载并重现该问题,不必担心大小,因为它确实很轻便。 / p>

以下是链接:

train_data

train_labels

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如评论中所述:

只有具有两个预测变量时,才可以可视化二维图中的决策边界。但是,您使用的是10个预测变量,这意味着每个点都存在于10维空间中,因此无法按预期方式绘制。

选择一组预测变量进行绘图将使您能够绘制决策边界,但它们不会以任何有意义的方式对您的绘图数据进行划分。

如果您确实想可视化一组决策规则,则可以执行决策树。


dtree <- train(x = svm_data[,-1], y = svm_labels$label, 
                   method = "rpart",
                   metric = "Accuracy",
                   trControl = trainControl(method = "cv", number = 3, classProbs = T),
                   cp = 0.005,
                   maxdepth = 3)



plot(dtree$finalModel, margin = 0.2)
text(dtree$finalModel)

enter image description here