2016-05-14 5 views
-2

私は分類のためにwekaを使用しています。私は別の電車とテストのデータセットを使用しています。私は、テストデータセットの評価中に、評価関数にトレーニングデータを使用することに気付きました。なぜ私たちはトレーニングデータを使用するのか誰にも分かりますか?なぜデータをテストしないのですか?私は次のコードで、なぜ列車を6列目に使うのか?なぜテストしないのですか?weka評価関数でトレーニングデータを使用するのはなぜですか?

 1. trainsource = new DataSource(train_file_path); 
     2. trains = trainsource.getDataSet(); 
     3. trains.setClassIndex(0); 

     4. testsource = new DataSource(test_file_path); 
     5. tests = testsource.getDataSet(); 


     6. evaluation= new Evaluation(**trains**);  
     7. model.buildClassifier(trains); 
     8. evaluation.evaluateModel(model, tests); 

ありがとうございます!あらかじめ!!

答えて

1

これはマシンの学習方法です。彼らは、分類データを訓練するために「訓練データ」を使用して学習します。 WEKAは一般的に 'arff形式'でトレーニングファイルを取得します。 トレーニングデータには、属性の下にたくさんのデータがあります。トレーニングファイルの例:

@relation maitre 

@attribute patrons {none, some, full} 
@attribute waitEstation {0-10,10-30,30-60,>60} 
@attribute reservation {TRUE, FALSE} 
@attribute bar {TRUE, FALSE} 
@attribute alternative {TRUE, FALSE} 
@attribute sit {yes, no} 

@data 
some,0-10,TRUE,FALSE,TRUE,yes 
full,30-60,FALSE,FALSE,TRUE,no 
some,0-10,FALSE,TRUE,FALSE,yes 
full,10-30,FALSE,FALSE,TRUE,yes 
full,>60,TRUE,FALSE,TRUE,no 
some,0-10,TRUE,TRUE,FALSE,yes 
none,0-10,FALSE,TRUE,FALSE,no 
some,0-10,TRUE,FALSE,FALSE,yes 
full,>60,FALSE,TRUE,FALSE,no 
full,10-30,TRUE,TRUE,TRUE,yes 
none,0-10,FALSE,FALSE,FALSE,no 
full,30-60,FALSE,TRUE,TRUE,no 

今分類は、例えばどのようなタイプのものとすることができる:単純ベイズ分類器、J48、SVMなどの分類器はトレーニングデータセットを使用して訓練されている場合、それはWEKAの用語で「モデル」を作成し、 。これで、作成された「モデル」を使用して「テストセット」を検証できます。だから、「テストデータ」はモデルを検証するためのものです。

上記のトレーニングデータセットを使用してクラシファイアをトレーニングすると、未知のクラスを予測することができます。たとえば、属性 'sit'を予測したいとします。以下のようにテストデータが必要です。

@relation maitretest 

@attribute patrons {none, some, full} 
@attribute waitEstation {0-10,10-30,30-60,>60} 
@attribute reservation {TRUE, FALSE} 
@attribute bar {TRUE, FALSE} 
@attribute alternative {TRUE, FALSE} 
@attribute sit {yes, no} 

@data 
some,0-10,TRUE,FALSE,TRUE,? 
full,30-60,FALSE,FALSE,TRUE,? 

注意してください。属性 '座席'の代わりにマーク。これで未知のクラスを予測できます。これがあなたの疑問をクリアすることを願っています:)

関連する問題