1

I have 4 numpy arrays (features). The dimension of numpy arrays are:

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

I have 360 (4 classes and each one is 90) audio file. And I obtained 4 different features(a1,..a4) from these wav files. I tried these features(a1,..a4) seperately to train svm and classify audios. But some results are not good. Now I want to combine these 4 features to obtain better result. But I don't want to concatenate these matrices. I just want to determine some coefficients for these features and obtain just one feature vector for classifying. For example,

when I use just a1 feature, the performance is:

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

When I use just a2 feature, the performance is:

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

When I use just a3 feature, the performance is:

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

When I use just a4 feature, the performance is:

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

How can I increase the performance with using these 4 features together? I also concatenated these features but the performance was not good also. Thank you

Maxim
  • 52,561
  • 27
  • 155
  • 209
ali
  • 119
  • 1
  • 3
  • 15

1 Answers1

0

The way you describe it, it looks a lot like boosting: each of your 4 classifiers is weak (see this answer) and the idea of boosting is to convert a bunch of weak learners to strong ones.

It's possible to do by hand from your existing classifiers, e.g. using sci-kit. But I think the easiest way would be to use XGBoost, which will internally employ all of your features, build a classifier per each one and then boost them into one classifier:

from xgboost import XGBClassifier

model = XGBClassifier()
model.fit(train_x, train_y)
model.predict(test_x)
Maxim
  • 52,561
  • 27
  • 155
  • 209