Weka Javaコードの使用-CSV(ヘッダー列なし)をARFF形式に変換する方法

StackOverflow https://stackoverflow.com/questions/3517186

  •  29-09-2019
  •  | 
  •  

質問

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の最初の行がヘッダーであると想定しています。それがインスタンスの場合、そのインスタンスデータをヘッダー行として使用し、インスタンスデータとしてではなく使用します。これは間違いなくあなたが望むものではありません。

上記のコードの前に、ファイルを読み取り、ヘッダーの行を書き、ファイルをもう一度保存する必要があります。

見る Wekaメーリングリストでのあなたの質問に対する私の答え.

他のヒント

データにヘッダー行が存在しない場合は、オプション-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ファイルの最初の行として表示される列ヘッダーです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top