我正在尝试在 R 中输出支持向量机二元分类模型的变量重要性,但它不断产生错误。
我在 Iris 数据集上尝试了相同的代码,它按预期工作。但是,当我尝试使用自己的数据集修改模型的代码时,会产生错误。模型创建效果很好;但是,当我尝试输出变量重要性时,会出现错误。
我正在使用以下数据集:
titanic <- structure(list(PassengerId = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
392, 393, 394, 395, 396, 397, 398, 399, 400, 401), Survived = c(0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0,
1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0,
0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1,
0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1,
0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0,
1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1,
1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1,
0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1,
1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0,
1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1
), Pclass = c(3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2,
3, 2, 3, 3, 2, 2, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 3, 2, 1, 1, 3,
3, 3, 3, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 2, 3,
2, 3, 3, 1, 3, 1, 3, 2, 3, 3, 3, 2, 3, 2, 3, 3, 3, 3, 3, 2, 3,
3, 3, 3, 1, 2, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 2, 2, 3,
3, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 2, 1, 3, 2, 3,
2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, 3, 1, 3, 3, 3,
3, 2, 2, 3, 3, 2, 2, 2, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 2, 3, 3,
3, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1, 3, 3, 1, 2, 3, 3, 2, 3, 2, 3,
1, 3, 1, 3, 3, 2, 2, 3, 2, 1, 1, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3,
3, 3, 3, 1, 3, 2, 3, 2, 3, 1, 3, 2, 1, 2, 3, 2, 3, 3, 1, 3, 2,
3, 2, 3, 1, 3, 2, 3, 2, 3, 2, 2, 2, 2, 3, 3, 2, 3, 3, 1, 3, 2,
1, 2, 3, 3, 1, 3, 3, 3, 1, 1, 1, 2, 3, 3, 1, 1, 3, 2, 3, 3, 1,
1, 1, 3, 2, 1, 3, 1, 3, 2, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 2, 3,
1, 1, 2, 3, 3, 1, 3, 1, 1, 1, 3, 3, 3, 2, 3, 1, 1, 1, 2, 1, 1,
1, 2, 3, 2, 3, 2, 2, 1, 1, 3, 3, 2, 2, 3, 1, 3, 2, 3, 1, 3, 1,
1, 3, 1, 3, 1, 1, 3, 1, 2, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 1, 3,
3, 3, 3, 1, 2, 3, 3, 3, 2, 3, 3, 3, 3, 1, 3, 3, 1, 1, 3, 3, 1,
3, 1, 3, 1, 3, 3, 1, 3, 3, 1, 3, 2, 3, 2, 3, 2, 1, 3, 3, 1, 3,
3, 3, 2, 2, 2, 3), Sex = c("Male", "female", "female", "female",
"Male", "Male", "Male", "Male", "female", "female", "female",
"female", "Male", "Male", "female", "female", "Male", "Male",
"female", "female", "Male", "Male", "female", "Male", "female",
"female", "Male", "Male", "female", "Male", "Male", "female",
"female", "Male", "Male", "Male", "Male", "Male", "female", "female",
"female", "female", "Male", "female", "female", "Male", "Male",
"female", "Male", "female", "Male", "Male", "female", "female",
"Male", "Male", "female", "Male", "female", "Male", "Male", "Male",
"Male", "Male", "Male", "female", "Male", "female", "Male", "Male",
"female", "Male", "Male", "Male", "Male", "Male", "Male", "Male",
"female", "Male", "Male", "female", "Male", "female", "female",
"Male", "Male", "female", "Male", "Male", "Male", "Male", "Male",
"Male", "Male", "Male", "Male", "female", "Male", "female", "Male",
"Male", "Male", "Male", "Male", "female", "Male", "Male", "female",
"Male", "female", "Male", "female", "female", "Male", "Male",
"Male", "Male", "female", "Male", "Male", "Male", "female", "Male",
"Male", "Male", "Male", "female", "Male", "Male", "Male", "female",
"female", "Male", "Male", "female", "Male", "Male", "Male", "female",
"female", "female", "Male", "Male", "Male", "Male", "female",
"Male", "Male", "Male", "female", "Male", "Male", "Male", "Male",
"female", "Male", "Male", "Male", "Male", "female", "Male", "Male",
"Male", "Male", "female", "female", "Male", "Male", "Male", "Male",
"female", "Male", "Male", "Male", "Male", "female", "Male", "Male",
"female", "Male", "Male", "Male", "female", "Male", "female",
"Male", "Male", "Male", "female", "Male", "female", "Male", "female",
"female", "Male", "Male", "female", "female", "Male", "Male",
"Male", "Male", "Male", "female", "Male", "Male", "female", "Male",
"Male", "female", "Male", "Male", "Male", "female", "female",
"Male", "female", "Male", "Male", "Male", "Male", "Male", "Male",
"Male", "Male", "Male", "Male", "female", "female", "Male", "Male",
"female", "Male", "female", "Male", "female", "Male", "Male",
"female", "female", "Male", "Male", "Male", "Male", "female",
"female", "Male", "Male", "Male", "female", "Male", "Male", "female",
"female", "female", "female", "female", "female", "Male", "Male",
"Male", "Male", "female", "Male", "Male", "Male", "female", "female",
"Male", "Male", "female", "Male", "female", "female", "female",
"Male", "Male", "female", "Male", "Male", "Male", "Male", "Male",
"Male", "Male", "Male", "Male", "female", "female", "female",
"Male", "female", "Male", "Male", "Male", "female", "Male", "female",
"female", "Male", "Male", "female", "Male", "Male", "female",
"female", "Male", "female", "female", "female", "female", "Male",
"Male", "female", "female", "Male", "female", "female", "Male",
"Male", "female", "female", "Male", "female", "Male", "female",
"female", "female", "female", "Male", "Male", "Male", "female",
"Male", "Male", "female", "Male", "Male", "Male", "female", "Male",
"Male", "Male", "female", "female", "female", "Male", "Male",
"Male", "Male", "Male", "Male", "Male", "Male", "female", "female",
"female", "female", "Male", "Male", "female", "Male", "Male",
"Male", "female", "female", "female", "female", "Male", "Male",
"Male", "Male", "female", "female", "female", "Male", "Male",
"Male", "female", "female", "Male", "female", "Male", "Male",
"Male", "female", "Male", "female", "Male", "Male", "Male", "female",
"female", "Male", "female", "Male", "Male", "female", "Male"),
Age = c(22, 38, 26, 35, 35, 60, 54, 2, 27, 14, 4, 58, 20,
39, 14, 55, 2, 60, 31, 60, 35, 34, 15, 28, 8, 38, 60, 19,
60, 60, 40, 60, 60, 66, 28, 42, 60, 21, 18, 14, 40, 27, 60,
3, 19, 60, 60, 60, 60, 18, 7, 21, 49, 29, 65, 60, 21, 28.5,
5, 11, 22, 45, 4, 60, 60, 29, 19, 17, 26, 32, 16, 21, 26,
32, 25, 60, 60, 0.83, 30, 22, 29, 60, 28, 17, 33, 16, 60,
23, 24, 29, 20, 46, 26, 59, 60, 71, 23, 34, 34, 28, 60, 21,
33, 37, 28, 21, 60, 38, 60, 47, 14.5, 22, 20, 17, 21, 70.5,
29, 24, 2, 21, 60, 32.5, 32.5, 54, 12, 60, 24, 60, 45, 33,
20, 47, 29, 25, 23, 19, 37, 16, 24, 60, 22, 24, 19, 18, 19,
27, 9, 36.5, 42, 51, 22, 55.5, 40.5, 60, 51, 16, 30, 60,
60, 44, 40, 26, 17, 1, 9, 60, 45, 60, 28, 61, 4, 1, 21, 56,
18, 60, 50, 30, 36, 60, 60, 9, 1, 4, 60, 60, 45, 40, 36,
32, 19, 19, 3, 44, 58, 60, 42, 60, 24, 28, 60, 34, 45.5,
18, 2, 32, 26, 16, 40, 24, 35, 22, 30, 60, 31, 27, 42, 32,
30, 16, 27, 51, 60, 38, 22, 19, 20.5, 18, 60, 35, 29, 59,
5, 24, 60, 44, 8, 19, 33, 60, 60, 29, 22, 30, 44, 25, 24,
37, 54, 60, 29, 62, 30, 41, 29, 60, 30, 35, 50, 60, 3, 52,
40, 60, 36, 16, 25, 58, 35, 60, 25, 41, 37, 60, 63, 45, 60,
7, 35, 65, 28, 16, 19, 60, 33, 30, 22, 42, 22, 26, 19, 36,
24, 24, 60, 23.5, 2, 60, 50, 60, 60, 19, 60, 60, 0.92, 60,
17, 30, 30, 24, 18, 26, 28, 43, 26, 24, 54, 31, 40, 22, 27,
30, 22, 60, 36, 61, 36, 31, 16, 60, 45.5, 38, 16, 60, 60,
29, 41, 45, 45, 2, 24, 28, 25, 36, 24, 40, 60, 3, 42, 23,
60, 15, 25, 60, 28, 22, 38, 60, 60, 40, 29, 45, 35, 60, 30,
60, 60, 60, 24, 25, 18, 19, 22, 3, 60, 22, 27, 20, 19, 42,
1, 32, 35, 60, 18, 1, 36, 60, 17, 36, 21, 28, 23, 24, 22,
31, 46, 23, 28, 39), SibSp = c(1, 1, 0, 1, 0, 0, 0, 3, 0,
1, 1, 0, 0, 1, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 3, 1, 0, 3,
0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 2, 1, 1, 1, 0, 1, 0, 0, 1,
0, 2, 1, 4, 0, 1, 1, 0, 0, 0, 0, 1, 5, 0, 1, 3, 0, 1, 0,
0, 4, 2, 0, 5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
1, 0, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2,
0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 4, 2, 0, 1, 0,
0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1,
0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0,
0, 0, 4, 0, 0, 1, 0, 0, 0, 4, 1, 0, 0, 1, 3, 0, 0, 0, 8,
0, 4, 2, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
0, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 1, 0, 0, 4, 0, 0, 1, 0,
0, 0, 1, 1, 0, 0, 0, 2, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 4, 1, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 1, 1, 0, 0, 2, 1, 0,
1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0, 0, 1, 0, 2, 0, 0,
2, 1, 0, 1, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1,
1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 5, 0, 0, 0,
1, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0), Parch = c(0, 0, 0, 0, 0,
0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
1, 5, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 2, 0, 0,
2, 0, 1, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
0, 2, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, 0, 2, 0, 1, 0, 0,
0, 2, 1, 0, 0, 0, 1, 2, 1, 4, 0, 0, 0, 1, 1, 0, 0, 1, 1,
0, 0, 0, 2, 0, 2, 1, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2,
0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 1, 0,
0, 2, 2, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,
1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
0, 2, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 2, 0, 0, 0, 1,
1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0,
2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0), Fare = c(7.25,
71.2833, 7.925, 53.1, 8.05, 8.4583, 51.8625, 21.075, 11.1333,
30.0708, 16.7, 26.55, 8.05, 31.275, 7.8542, 16, 29.125, 13,
18, 7.225, 26, 13, 8.0292, 35.5, 21.075, 31.3875, 7.225,
263, 7.8792, 7.8958, 27.7208, 146.5208, 7.75, 10.5, 82.1708,
52, 7.2292, 8.05, 18, 11.2417, 9.475, 21, 7.8958, 41.5792,
7.8792, 8.05, 15.5, 7.75, 21.6792, 17.8, 39.6875, 7.8, 76.7292,
26, 61.9792, 35.5, 10.5, 7.2292, 27.75, 46.9, 7.2292, 83.475,
27.9, 27.7208, 15.2458, 10.5, 8.1583, 7.925, 8.6625, 10.5,
46.9, 73.5, 14.4542, 56.4958, 7.65, 7.8958, 8.05, 29, 12.475,
9, 9.5, 7.7875, 47.1, 10.5, 15.85, 34.375, 8.05, 263, 8.05,
8.05, 7.8542, 61.175, 20.575, 7.25, 8.05, 34.6542, 63.3583,
23, 26, 7.8958, 7.8958, 77.2875, 8.6542, 7.925, 7.8958, 7.65,
7.775, 7.8958, 24.15, 52, 14.4542, 8.05, 9.825, 14.4583,
7.925, 7.75, 21, 247.5208, 31.275, 73.5, 8.05, 30.0708, 13,
77.2875, 11.2417, 7.75, 7.1417, 22.3583, 6.975, 7.8958, 7.05,
14.5, 26, 13, 15.0458, 26.2833, 53.1, 9.2167, 79.2, 15.2458,
7.75, 15.85, 6.75, 11.5, 36.75, 7.7958, 34.375, 26, 13, 12.525,
66.6, 8.05, 14.5, 7.3125, 61.3792, 7.7333, 8.05, 8.6625,
69.55, 16.1, 15.75, 7.775, 8.6625, 39.6875, 20.525, 55, 27.9,
25.925, 56.4958, 33.5, 29.125, 11.1333, 7.925, 30.6958, 7.8542,
25.4667, 28.7125, 13, 0, 69.55, 15.05, 31.3875, 39, 22.025,
50, 15.5, 26.55, 15.5, 7.8958, 13, 13, 7.8542, 26, 27.7208,
146.5208, 7.75, 8.4042, 7.75, 13, 9.5, 69.55, 6.4958, 7.225,
8.05, 10.4625, 15.85, 18.7875, 7.75, 31, 7.05, 21, 7.25,
13, 7.75, 113.275, 7.925, 27, 76.2917, 10.5, 8.05, 13, 8.05,
7.8958, 90, 9.35, 10.5, 7.25, 13, 25.4667, 83.475, 7.775,
13.5, 31.3875, 10.5, 7.55, 26, 26.25, 10.5, 12.275, 14.4542,
15.5, 10.5, 7.125, 7.225, 90, 7.775, 14.5, 52.5542, 26, 7.25,
10.4625, 26.55, 16.1, 20.2125, 15.2458, 79.2, 86.5, 512.3292,
26, 7.75, 31.3875, 79.65, 0, 7.75, 10.5, 39.6875, 7.775,
153.4625, 135.6333, 31, 0, 19.5, 29.7, 7.75, 77.9583, 7.75,
0, 29.125, 20.25, 7.75, 7.8542, 9.5, 8.05, 26, 8.6625, 9.5,
7.8958, 13, 7.75, 78.85, 91.0792, 12.875, 8.85, 7.8958, 27.7208,
7.2292, 151.55, 30.5, 247.5208, 7.75, 23.25, 0, 12.35, 8.05,
151.55, 110.8833, 108.9, 24, 56.9292, 83.1583, 262.375, 26,
7.8958, 26.25, 7.8542, 26, 14, 164.8667, 134.5, 7.25, 7.8958,
12.35, 29, 69.55, 135.6333, 6.2375, 13, 20.525, 57.9792,
23.25, 28.5, 153.4625, 18, 133.65, 7.8958, 66.6, 134.5, 8.05,
35.5, 26, 263, 13, 13, 13, 13, 13, 16.1, 15.9, 8.6625, 9.225,
35, 7.2292, 17.8, 7.225, 9.5, 55, 13, 7.8792, 7.8792, 27.9,
27.7208, 14.4542, 7.05, 15.5, 7.25, 75.25, 7.2292, 7.75,
69.3, 55.4417, 6.4958, 8.05, 135.6333, 21.075, 82.1708, 7.25,
211.5, 4.0125, 7.775, 227.525, 15.7417, 7.925, 52, 7.8958,
73.5, 46.9, 13, 7.7292, 12, 120, 7.7958, 7.925, 113.275,
16.7, 7.7958, 7.8542, 26, 10.5, 12.65, 7.925), Embarked = c(3,
1, 3, 3, 3, 2, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 2, 3, 3, 1,
3, 3, 2, 3, 3, 3, 1, 3, 2, 3, 1, 1, 2, 3, 1, 3, 1, 3, 3,
1, 3, 3, 1, 1, 2, 3, 2, 2, 1, 3, 3, 3, 1, 3, 1, 3, 3, 1,
3, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3,
3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1,
1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 1, 3, 3, 1, 3,
2, 3, 1, 3, 3, 3, 1, 3, 3, 1, 2, 3, 1, 3, 1, 3, 3, 3, 3,
1, 3, 3, 3, 1, 1, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3,
3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 2, 3, 2, 3, 3, 3,
3, 3, 1, 1, 2, 3, 2, 3, 3, 3, 3, 1, 3, 3, 3, 1, 2, 1, 3,
3, 3, 3, 2, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 3, 3, 1, 2, 3, 3, 3,
3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 3, 2, 3, 3, 3, 2, 3, 3, 3,
3, 3, 3, 3, 3, 1, 2, 3, 3, 3, 2, 3, 2, 3, 3, 3, 3, 1, 3,
3, 3, 2, 3, 1, 1, 3, 3, 1, 1, 3, 3, 1, 2, 2, 3, 2, 3, 3,
1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 2, 3, 3,
1, 3, 3, 3, 1, 2, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 2, 2, 3, 1, 1,
3, 2, 3, 1, 1, 2, 1, 1, 3, 3, 1, 3, 1, 3, 1, 1, 3, 1, 1,
3, 3, 3, 3, 3, 3, 2, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3)), row.names = c(NA,
-400L), class = c("tbl_df", "tbl", "data.frame"))
这是我尝试过的代码:
library(caret)
library(tidyverse)
trctrl <- trainControl(method = "cv", number = 10, savePredictions=TRUE)
svm <- train(as.factor(Survived)~., data = titanic, method ="svmLinear", trControl=trctrl)
varImp(svm)
分配
svm
的行工作正常,但 varImp(svm)
行会产生以下错误消息:
Error in regMod$residuals : $ operator is invalid for atomic vectors
In addition: Warning message:
In mean.default(y, rm.na = TRUE) :
argument is not numeric or logical: returning NA
如何解决此问题并输出泰坦尼克号数据集的变量重要性表?
如果您查看
caret
中使用 methods(varImp)
计算变量重要性的可用方法,您会发现没有函数 varImp.svm
。没有直接的方法来获取 SVM 的此类信息。您可能可以使用手动方法来计算等效值,例如通过使用每种预测变量组合构建模型并比较性能。请参阅交叉验证上的这篇文章:
您可以使用
vi_permute
包中的 vip
来计算
library(vip)
library(caret)
library(tidyverse)
df <- titanic %>%
mutate(Survived = as.factor(ifelse(Survived == 1,"Yes","No"))) %>%
as.data.frame() %>%
subset(select = -PassengerId)
trctrl <- trainControl(method = "cv", number = 10, savePredictions=TRUE,
classProbs=T)
set.seed(7)
svm <- caret::train(Survived~., data = df,
method ="svmLinear", trControl=trctrl)
# Define prediction wrapper for predicting class labels from a "train" object
pfun <- function(object, newdata) {
# Need vector of predicted class probabilities when using log-loss metric
predict(object, newdata = newdata, type = "prob")[,"Yes"]
}
set.seed(1413) # for reproducibility
vip(svm,
method = "permute", nsim = 5,
target = "Survived", metric = "roc_auc",
event_level = "second", # use "Yes" as class label/"event" of interest
pred_wrapper = pfun,
train = df
)