2017-09-22 229 views
0

我有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个功能来提高性能?我也连接了这些功能,但性能也不好。谢谢

回答

0

你描述它的方式看起来很像boosting:你的4个分类器中的每一个都很弱(见this answer),助推的想法是将一群弱的学习者转换为强大的学习者。

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

from xgboost import XGBClassifier 

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