2012-04-30 12 views
1

Javaコードを使用してWeka分類を自動化しようとしています。私は私のCSVファイルを読み取ろうとすると、次のエラーが発生します。JavaコードでWeka CSVLoaderを使用するときのJava IO例外

java.io.IOException:値の数が間違っています。 98、期待された97、 トークン[EOL]、3行目 weka.core.converters.ConverterUtils.errms(ConverterUtils.java:912) weka.core.converters.CSVLoader.getInstance(CSVLoader.java:747) ) sun.reflect.NativeMethodAccessorImplでClassifier_Search.main(Classifier_Search.java:178で Classifier_Search.readFile(Classifier_Search.java:18で weka.core.converters.CSVLoader.getDataSet(CSVLoader.java:570)))で EDUで java.lang.reflect.Method.invoke(不明なソース)で sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)で.invoke0(ネイティブメソッド) .rice.cs.drjava.model.compiler.JavacCo mpiler.runCommand(JavacCompiler.java:271)

私はWeka GUIを使ってcsvファイルをフィードしようとすると同じエラーが発生します。私の知る限り、csvファイルはWekaでうまく使用した他のcsvファイルと同じです。何が原因でこのエラーが発生する可能性がありますか?

私はOldNabbleでこれについて満足のいく答えを見つけることができませんでした。私が見つけた1つの提案を試しましたが、うまくいきませんでした。 1つの提案は、二重引用符でエントリをカプセル化することでした。何も変更されませんでした。ただ、明確にするため

(と私は物事をアップロードする方法がわからないので)、CSVファイルには、次のようになります。

C1V1、C2V1、C3V1、...クラス、

4000.5、3890.6 、2900.7、... N、

...

...

行当たり97件のエントリがあります。別のバージョンでは、文字列と文字(最初の行と最後の列)を二重引用符で囲んでいますが、前にも述べたように、それは役に立ちません。

ありがとうございます!

+1

csvの3行目で問題が発生しています。その行に余分なカンマがありますか? – Rohit

+0

いいえありません。私はファイルを調べて、すべての行が同じに見えます。ありがとう、結構です! – Nicole

+0

3行目を削除しても機能しますか? – Rohit

答えて

0

違いを発見しました。.csvファイルの行の最後にカンマがあると、csvloaderはこのエラーをスローします。したがって、これを使用しようとしている場合は、.csvファイルの行末にあるコンマを削除してください。私はなぜライン3だけで、ライン1と2ではなく(すべてのラインが同じであった)エラーを投げたのか分かりませんが、これは修正されました。

1

私もwekaツールを使用するときに同じ問題がありました。私はこれをこのように並べ替えることができました。

enter image description here

あなたがこのタイプの例外を取得します。指示された行の上にある行を探します。例:私の場合、例外は80542行の何らかの不具合が原因であるため、80541行をチェックする必要があります。次に、行に余分なカンマまたは余分な二重引用符があることがわかります。その余分なカンマまたは二重引用符を削除し、ファイルを保存します。もう一度実行してください。その後、例外なく正常に動作します。

関連する問題