【问题标题】:How to combine multiple feature vectors effectively for classifying如何有效地组合多个特征向量进行分类
【发布时间】:2018-03-03 15:37:37
【问题描述】:

我有 4 个 numpy 数组(功能)。 numpy数组的维数为:

a1=(360,100)
a2=(360,100)
a3=(360,100)
a4=(360,13)

我有 360 个(4 个班级,每个班级 90 个)音频文件。我从这些 wav 文件中获得了 4 个不同的特征(a1,..a4)。我分别尝试了这些功能(a1,..a4)来训练 svm 并对音频进行分类。但有些结果并不好。现在我想结合这 4 个特性来获得更好的结果。但我不想连接这些矩阵。我只想确定这些特征的一些系数,并获得一个特征向量进行分类。 例如,

当我只使用 a1 功能时,性能是:

class1=%50, class2=%85, class3=%95, class4=%95

当我只使用 a2 功能时,性能是:

class1=%30, class2= %96, class3=%94, class4=%80

当我只使用 a3 功能时,性能是:

class1=%64, class2=%94, class3=%74, class4=%97

当我只使用 a4 功能时,性能是:

class1=%74, class2=%96, class3=%85, class4=%88

如何同时使用这 4 个功能来提高性能?我也连接了这些功能,但性能也不好。谢谢

【问题讨论】:

    标签: python classification svm xgboost adaboost


    【解决方案1】:

    按照您的描述方式,它看起来很像 boosting:您的 4 个分类器中的每一个都是弱的(请参阅 this answer),而提升的想法是将一堆弱学习器转换为强学习器。

    可以从您现有的分类器中手动完成,例如using sci-kit。但我认为最简单的方法是使用XGBoost,它将在内部使用您的所有功能,为每个功能构建一个分类器,然后将它们提升为一个分类器:

    from xgboost import XGBClassifier
    
    model = XGBClassifier()
    model.fit(train_x, train_y)
    model.predict(test_x)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-05
      • 2012-07-14
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2021-08-18
      相关资源
      最近更新 更多