2016-04-21 77 views
0

我使用HOG爲了通過圖像A提取一組特徵。HOG返回一個特徵的1xN元素向量。 然而,線性SVM只接受每個樣本的2個特徵,即訓練數據矩陣的大小爲Mx2。所以我如何能夠使HOG向量適應線性SVM的訓練。 請幫幫我。 謝謝如何使HOG特徵向量適應線性svm輸入

回答

2

你是什麼意思的「線性SVM接受每個樣品只有2個功能」?您可能會對SVM功能如何接受其培訓數據感到困惑。下面是我如何使用它的一個簡單例子:

首先,我們使用fitcsvm使用500個隨機數據樣本(訓練數據矩陣中的行)訓練SVM模型,每個樣本有1000個元素(訓練數據中的列矩陣),其中,第一250個樣本是在級別1(第一250行訓練標籤),而最後250個樣本是在0級(最後250行訓練標籤):

>> training_data = rand(500, 1000); 
>> training_labels = [ones(250,1); zeros(250,1)]; 
>> 
>> svm_model = fitcsvm(training_data, testing_data) 

svm_model = 

    ClassificationSVM 
     PredictorNames: {1x1000 cell} 
     ResponseName: 'Y' 
      ClassNames: [0 1] 
     ScoreTransform: 'none' 
    NumObservations: 500 
       Alpha: [418x1 double] 
       Bias: 2.3217 
    KernelParameters: [1x1 struct] 
     BoxConstraints: [500x1 double] 
    ConvergenceInfo: [1x1 struct] 
    IsSupportVector: [500x1 logical] 
       Solver: 'SMO' 


    Properties, Methods 

我們可以產生一些10個測試樣本的隨機測試數據,每個樣本有1000個元素,並從中創建一些預測:

>> test_data = rand(10, 1000); 
>> predicted_classes = predict(svm_model, test_data) 

predicted_classes = 

    1 
    1 
    1 
    1 
    1 
    0 
    0 
    0 
    1 
    0 

這是否回答你的問題?

+0

嗨,丹尼爾王子先生。 –