【问题标题】:Sklearn - svm weighted featuresSklearn - 支持向量机加权特征
【发布时间】:2016-08-04 14:12:20
【问题描述】:

您好,我是使用 scikit-learn 进行机器学习的新手,但我有一个问题。

是否可以让 svm 识别我的矢量数据中具有更高重要性或权重的某些特征。我不知道正确的温度:/

这是我想要的示例:

假设我们有一堆二维数组中的向量:

dt = [
[x1, y1, z1, q1],
[x2, y2, z2, q2],
[x3, y3, z3, q3],
[x4, y4, z4, q4]]

和目标数据向量:

target = [1,0,0,1]

我想知道如何使 dt 中每个向量的所有 q 个特征比其他特征更重要。

我知道如何按集合平衡数据或设置 sample_weight,但都无法帮助我解决这个问题。

干杯

【问题讨论】:

    标签: python scikit-learn svm


    【解决方案1】:

    如果您使用 sklearn.svm.SVC 进行分类,您可以访问分类器对象的 coef_ 属性。例如:

    classifier = SVC(C=1.0, kernel='linear', random_state=241)
    classifier.fit(dt, target)
    coef = classifier.coef_ # here the weights of the features will be stored
    

    http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html - 有关详细信息的文档。

    【讨论】:

    • 好的,我现在了解如何访问表示重量特征的数据,但有什么方法可以更改它们。文档清楚地表明这个 coef_ 是一个只读属性。我想让我的分类器强行获取一些更重要的特征。
    • 我只能表达一个假设,而不使用库。 SVM - 它是线性方法,对特征尺度很敏感。您可以使用 StandartScaler (scikit-learn.org/stable/modules/generated/…) 将它们调整到一个比例(不是必需的,但有时它可以显着提高算法的效率)。然后,您可以自己预处理您的训练数据,并使用 coef
    • 谢谢,我会试试这个方法
    猜你喜欢
    • 2016-05-19
    • 2020-08-28
    • 2013-01-03
    • 2020-06-19
    • 2017-05-17
    • 2011-05-17
    • 2013-07-05
    • 2016-08-17
    • 2016-12-02
    相关资源
    最近更新 更多