Mahout を使用して Naive Bayes 分類器をトレーニングしようとしています。
最初によくわからないのは、トレーニング データがどのように見えるかということです。私のデータセットは意見で構成され、それが肯定的か否定的か (肯定の場合は 1、否定の場合は -1) で構成されます。Mahout in Action ブックの分類に関する章から理解した内容から、トレーニング データを次のように設定しました。 :
1 'Content of positive opinion'
-1 'Content of negative opinion'
seqdirectory を使用してこのデータをシーケンス ファイルに変換し、次のコマンドで分類器をトレーニングしています。
$MAHOUT_HOME/bin/mahout trainnb -i seq_data/chunk-0 -o bmodel -ow
このエラーを出力します:
Exception in thread "main" java.io.FileNotFoundException: File temp/labelIndex does not exist.
trainnb で受け入れられるオプションを調べると、 --labelIndex オプションが見つかりました。これが何をするのか正確にはわかりませんが、これについて明確にすることができます。
次に、次のようにコマンドを実行しました(lindexは作成したファイルです):
$MAHOUT_HOME/bin/mahout trainnb -i seq_data/chunk-0 -o bmodel -ow -li lindex
このエラーを出力します:
java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.mahout.math.VectorWritable
at org.apache.mahout.classifier.naivebayes.training.IndexInstancesMapper.map(IndexInstancesMapper.java:29)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)
私のアプローチが間違っている場合、ここで何が間違っているのか知りたいです。トレーニング データを構造化し、コマンドを実行するにはどうすればよいですか?