2017-01-17 9 views
1

私は、正規のコマンドを使用しています約55.00。一方、正規化アルゴリズムを使わずに93.88の精度を得ました。誰が問題を正確に何をすればいいのか教えていただけますか?正規コマンドMATLABで分類器を使用する前に、

これは私のコードです:

load('train_and_test_data.mat') 
    Xtrain= Xtrain(:, 2:42); 
    Xtest= Xtest(:,2:42); 

    normA = Xtrain - min(Xtrain(:)); 
    Xtrain = normA ./ max(normA(:)); 


     normB = Xtest - min(Xtest(:)); 
    Xtest = normB ./ max(normB(:)); 


    Mdl = fitctree(Xtrain ,Ytrain); 

    y =Mdl.predict(Xtest); %test 


    Conf_Mat = confusionmat(Ytest,y) 

私は正規化前使っていたデータのこの小さなサンプル:

1 0 0 0 0 
17 4 2 2 0 
38 20 17 0 0 
11 2 2 0 0 
2 1 1 0 0 
11 1 4 0 0 
8 5 1 1 1 
21 1 16 0 0 
27 12 11 0 0 
13 11 2 1 0 
12 3 2 2 1 
+0

どのような種類のデータを使用しますか? – ginge

+0

数値データを使用しています –

+0

決定木は正規化の影響を受けてはなりません。この場合、数値の精度のために違いがあるかもしれませんが、それは非常に起こりにくいようです。理由が見つからない場合は、正規化されていないバージョンを使用することをお勧めします。 – ginge

答えて

0

あなたは同じ変換を使用してトレーニングとテストセットを正規化されていません。

normA = Xtrain - min(Xtrain(:)); 
Xtrain = normA ./ max(normA(:)); 

normB = Xtest - min(Xtest(:)); 
Xtest = normB ./ max(normB(:)); 

異なる量を減算します。異なる金額で分割する。したがって、テストセットの入力は、トレーニングセットの入力と比較できません。代わりに、同じ変換を使用してテストデータを正規化してください。

normB = Xtest - min(Xtrain(:)); 
Xtest = normB ./ max(normA(:)); 
関連する問題