6

Weka Javaライブラリを使用して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のソースコードを調べてみましたが、それの頭や尾を作ることができませんでした:-(

4

3 に答える 3

6

簡単に言うと、ファイルを読み込んだは属性名を割り当てることはできません。

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

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

wekaメーリングリストであなたの質問に対する私の答えを見てください。

于 2010-08-19T04:22:19.723 に答える
4

データにヘッダー行がない場合は、オプション-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

于 2014-04-10T11:26:20.053 に答える
1

私の解決策:

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ファイルの最初の行として表示される列ヘッダーです。

于 2013-11-20T17:20:37.677 に答える