2017-09-22 7 views
0

J'ai 4 tableaux (caractéristiques) numpy. La dimension des tableaux numériques est:Comment combiner efficacement plusieurs vecteurs de caractéristiques pour le classement

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

J'ai un fichier audio de 360 ​​(4 classes et chacun de 90). Et j'ai obtenu 4 caractéristiques différentes (a1, .. a4) de ces fichiers wav. J'ai essayé ces caractéristiques (a1, .. a4) séparément pour former svm et classifier audios. Mais certains résultats ne sont pas bons. Maintenant, je veux combiner ces 4 fonctionnalités pour obtenir de meilleurs résultats. Mais je ne veux pas concaténer ces matrices. Je veux juste déterminer quelques coefficients pour ces caractéristiques et obtenir juste un vecteur de caractéristique pour classifier. Par exemple,

quand j'utiliser la fonction juste a1, la performance est:

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

Quand j'utiliser la fonction juste a2, la performance est:

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

Quand j'utiliser la fonction juste a3 , la performance est:

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

Lorsque j'utilise seulement la fonctionnalité A4, la performance est :

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

Comment puis-je augmenter les performances en utilisant ces 4 fonctionnalités ensemble? J'ai également concaténé ces fonctionnalités mais la performance n'était pas bonne aussi. Merci

Répondre

0

La façon dont vous le décrivez ressemble beaucoup à boosting: chacun de vos 4 classificateurs est faible (voir this answer) et l'idée de stimuler est de convertir un groupe d'apprenants faibles en forts.

Il est possible de faire à la main à partir de vos classificateurs existants, par ex. using sci-kit. Mais je pense que la meilleure façon serait d'utiliser XGBoost, qui emploiera en interne toutes vos fonctions, construire un classificateur par chacun d'eux et puis les stimuler dans un classificateur:

from xgboost import XGBClassifier 

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