Scikits Learn:线性内核SVM中的特征权重

时间:2012-06-17 23:18:43

标签: machine-learning svm scikits feature-selection scikit-learn

我正在处理文本分类问题(情绪分析)。我想知道scikit中是否有任何选项 - 学习为特征添加“权重”(作为重要性的度量)。我检查了文档并找到了the attribute "coefs" of SVC,定义如下:

    coef_   array, shape = [n_class-1, n_features]  
    Weights asigned to the features (coefficients in the primal problem). 
   This is only available in the case of linear kernel.coef_ is readonly property derived from dual_coef_ and support_vectors_ 

但是,此属性似乎是只读的。

1 个答案:

答案 0 :(得分:5)

coef_向量是机器学习算法学习参数的视图。手动设置它们是没有意义的,因为它们可以从数据中自动进行最佳调整。你可以做的是:

  • 如果您事先了解某些课程比其他课程更重要,请设置class_weight

  • 设置sample_weight,如果您事先了解某些样本(数据集中的行)比其他样本更重要

  • 重新缩放功能以使某些功能具有更多的差异,例如,如果您使用RBF内核并且希望使某些功能比其他功能更重要(通常最好将所有功能扩展到单位方差)< / p>

  • 如果您使用内核并希望以这种方式编码特殊的先验知识,请使用自定义预先计算的内核。

对于文本分类,数据很暗,内核通常只是浪费资源而很少或没有增加预测准确性,因此最后两点可能与您的具体问题无关。