3

こんばんは、

私は教師あり分類タスクに取り組んでいます。「テキスト」クラスの形式のデータでいっぱいの大きなarffファイルがあります。EとIの2つのクラスしかありません。

このデータをWekaExplorerにロードし、TF-IDFを含むStringToWordVectorを適用してから、LibSVMを使用してデータを分類し、結果を取得できます。ただし、5x2相互検証を使用して、ROC曲線の下の領域を取得する必要があります。そこで、処理したデータを保存し、Weka Experimenterを開いてロードし、2倍、5回の反復に設定してから、アルゴリズムをlibSVMに設定します。

[実行]タブに移動して[開始]を押すと、次のエラーが発生します。

18:31:18:開始

18:31:18:クラス属性は名目ではありません!

18:31:18:中断

18:31:18:1つのエラーがありました

なぜこれが起こっているのか、正確には何がエラーなのか、それを修正する方法はわかりません。私はこのエラーをグーグルで検索しましたが、それは私を解決策に導きません。これを修正するためにここからどこに行けばよいかわかりません。

Explorerに戻り、処理されたファイルをリロードして、問題なく分類できますが、Experimenterで行う必要があります。

4

3 に答える 3

6

私の場合、ファイルには名目上の属性がありました。ただし、Wekaは、レコードが割り当てられているクラスを示しているため、これらが最後になることを期待しています。公称値が最後になるようにデータを再配置した方法は次のとおりです。

  1. Explorerで、arffファイルを開きます。
  2. [編集...]をクリックして、各レコードのクラスとなる列を見つけます。
  3. 列ヘッダーを右クリックして、[クラスとしての属性]を選択します。
  4. [保存...]をクリックして、Experimenterでこの新しいデータセットを使用します。

チャームのように機能します。

于 2014-05-04T14:33:58.007 に答える
3

If your class attribute is numeric (like 0,1) change it to a nominal form like true, false.

于 2012-12-03T11:44:31.263 に答える
0

StringToWordVectorフィルターは、出力するデータの最初の属性としてクラス属性を配置します。実験者は、データの最後の属性がクラスであることを期待しています。フィルター処理されたデータの属性を並べ替えることができますが、フィルターと分類子を組み合わせる場合の最善の方法(および一般的に正しいアプローチ)は、FilteredClassifierを使用して、基本分類子(LibSVM)をStringToWordVectorフィルターでカプセル化することです。クラス属性は元の「テキスト」であるクラスデータの最後の属性であるため、これは問題なく機能するはずです。

于 2017-09-05T10:47:27.087 に答える