2017-09-22 228 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)