Weka Javaコードの使用-CSV(ヘッダー列なし)をARFF形式に変換する方法
質問
Weka Java Libraryを使用しています CSVファイルを読んでください と ARFFファイルに変換します.
問題は、 CSVファイルにはヘッダー行がありません, 、データのみ。 CSVファイルを持ち込んだ後、属性名を割り当てるにはどうすればよいですか? (すべての列は文字列データ型になります)
これが私がこれまでに持っているコードです:
CSVLoader loader = new CSVLoader();
loader.setSource(new File(CSVFilePath));
Instances data = loader.getDataSet();
ArffSaver saver = new ArffSaver();
saver.setInstances(data);
saver.setFile(new File(outputFilePath));
saver.writeBatch();
Wekaソースコードを調べてこれを理解しようとしましたが、頭や尾を作ることができませんでした:-(
解決
簡単な答えは、属性名を割り当てられないということです 後 ファイルを読みます。
CSVLoaderは、CSVの最初の行がヘッダーであると想定しています。それがインスタンスの場合、そのインスタンスデータをヘッダー行として使用し、インスタンスデータとしてではなく使用します。これは間違いなくあなたが望むものではありません。
上記のコードの前に、ファイルを読み取り、ヘッダーの行を書き、ファイルをもう一度保存する必要があります。
他のヒント
データにヘッダー行が存在しない場合は、オプション-Hを使用できます。
CSVLoader loader = new CSVLoader();
loader.setSource(new File(CSVFilePath));
String[] options = new String[1];
options[0] = "-H";
loader.setOptions(options);
Instances data = loader.getDataSet();
見る:http://weka.sourceforge.net/doc.dev/weka/core/converters/csvloader.html
私の解決策:
SELECT 'nameColumn1','nameColumn2'
UNION
SELECT idColumn1,idColumn2
FROM path
INTO OUTFILE '/tmp/w.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
NameColumn1とNameColumn2は、CSVファイルの最初の行として表示される列ヘッダーです。
所属していません StackOverflow