Scikit learn SVM特征名称

我正在使用Scikit learn开发一个SVM分类器。我有378个特征,并且在拟合我的分类器后发现,数据的最佳特征数量是41个。现在我想知道这41个特征具体是哪些。为了对每个特征的重要性进行排序,我使用了以下方法:

selector.ranking_ 

这给了我以下输出:

array([294, 285, 265, 239, 345, 240, 231, 282, 284, 341, 344, 244, 224,   123, 151, 194, 190, 161, 170, 219, 227, 283, 275, 121, 177, 140,   164, 353, 185, 230, 293, 320, 256,  37,   4, 321, 322, 267, 327,   273, 206, 241, 169, 110, 147, 323, 242, 168,  24, 301,  19, 204,    69, 297, 362, 281, 257, 334, 108,  73, 325, 326, 331, 268, 207,   272, 274, 348,  39,  61, 243, 324, 189, 134, 142, 181,  23,  99,   356, 247, 276, 205,  27,  72, 221, 339, 149,  43,  54, 103, 238,   192, 143,  84, 114, 154,   9,  32,  75, 178, 291, 158, 237, 328,   292,  81,  85, 264, 337,  97,  68,  31,  44, 234, 352, 302, 193,    82,  52,  45,  60, 355, 132,  83, 258, 233, 223, 277, 288, 340,   342, 236, 232, 104, 126, 179, 162, 152, 173, 222, 235, 278, 269,    14, 171, 138, 163, 367, 102, 119, 309, 308, 129,  42, 200, 280,    93,  55,  62,  47, 213, 175,   6,  26, 116,  66, 165, 128,  88,    29, 307, 306, 208, 167, 279, 199, 130, 191,   5,  25, 131,  67,    87,  46, 370, 172, 259, 166, 378,  76,   3, 153, 148, 218, 262,    95, 120, 144, 125, 260, 330, 251, 209,  89,  91, 118,   2, 101,    48, 212, 186, 263, 217,  77,  65,  28,  78, 329, 261, 176, 150,   349, 117,  90,  34, 365, 298, 296, 228, 225, 216, 198, 311, 300,   304, 310, 317, 315, 109, 314,   1,  86, 299, 295, 229, 226, 343,   364,  63, 133, 303, 305, 318, 316, 366, 157, 156,  49, 359, 290,   188, 248, 174, 245, 203, 336, 215, 319, 250, 124, 135, 201,  33,   187, 289, 220, 350, 202, 246, 214, 338, 249, 335, 363, 184, 136,    41, 351,  80,  53, 145, 313, 183, 287, 211, 271,  96, 107,  74,   127,  16,  22, 312, 146, 286, 182, 270, 210, 346,  40,  15, 266,   347,   7,  17, 195,  70,  51, 113, 100, 180,  50, 122,  18,  11,   141,  94, 105, 159, 357, 368,  92,  64, 358, 196, 253,  79,  21,    59,  13, 111,  10, 252, 197,  56,   8, 361,  58,  57,  30, 371,   254, 333,  35,  20, 139, 155, 332, 255, 360,  38,  71, 115, 354,   112,  12, 137, 160, 369,  36,  98, 106, 372, 373, 374, 375, 376, 377])

我的每个特征都有一个特征名称(而不仅仅是数字)。我可以查看索引并将每个数字映射到相应的特征名称,但处理378个特征时这有点繁琐。有没有一种方法可以简单地列出特征名称而不是列索引号?

谢谢。


回答:

假设你使用的是pandas,你可以简单地这样做:

for col_num in selector.ranking_ :    print(yourDataFrame.columns[col_num])

其他选项很难说,除非我们不知道你的selector是什么。如果你有例如from sklearn.feature_selection import SelectKBest,你可以这样做:

mask = selector.get_support() #布尔值列表    new_features = [] #在接下来的循环中变成你的K个最佳特征的列表    for bool, feature in zip(mask, feature_names):        if bool:            new_features.append(feature)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注