【问题标题】:How to ensemble SVM and Logistic Regression with python如何使用 python 集成 SVM 和 Logistic 回归
【发布时间】:2015-01-18 06:30:30
【问题描述】:

我正在做一个文本分类的任务(7000 个文本由 10 个标签均匀分布)。并通过探索 SVM 和 Logistic 回归

clf1 = svm.LinearSVC()
clf1.fit(X, y)
clf1.predict(X_test)
score1 = clf1.score(X_test,y_true)

clf2 = linear_model.LogisticRegression()
clf2.fit(X, y)
clf2.predict(X_test)
score2 = clf2.score(X_test,y_true)

我得到了两个准确度,score1score2 我想我是否可以通过开发一个结合上述两个分类器输出的集成系统来提高我的准确度。 我自己学习了ensemble 的知识,我知道有bagging,boosting,and stacking。 但是,我不知道如何在ensemble 中使用我的支持向量机和逻辑回归预测的分数。谁能给我一些想法或给我一些示例代码?

【问题讨论】:

    标签: python svm logistic-regression text-classification ensemble-learning


    【解决方案1】:

    您可以只乘以概率,或使用其他组合规则。

    为了以更通用的方式做到这一点(尝试几个规则) 你可以使用brew

    from brew.base import Ensemble
    from brew.base import EnsembleClassifier
    from brew.combination.combiner import Combiner
    
    # create your Ensemble
    clfs = [clf1, clf2]
    ens = Ensemble(classifiers=clfs)
    
    # Since you have only 2 classifiers 'majority_vote' is note an option,
    # rule = ['mean', 'majority_vote', 'max', 'min', 'median']
    comb = Combiner(rule='mean')
    
    # now create your ensemble classifier
    ensemble_clf = EnsembleClassifier(ensemble=ens, combiner=comb)
    ensemble_clf.predict(X)
    

    另外,请记住,分类器应该足够多样化,以提供良好的组合结果。

    如果您的功能较少,我会说您应该检查一些动态分类器/集成选择(也在 brew 中提供),但由于您可能有很多功能,欧几里德距离可能没有意义来获得能力区域每个分类器的。最好的办法是根据混淆矩阵手动检查每个分类器倾向于正确的标签类型。

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 2016-07-16
      • 2015-01-06
      • 2018-12-29
      • 2018-03-23
      相关资源
      最近更新 更多