0

RapidMiner で CSV ファイルをインポートする際に問題があります。浮動小数点値は、整数値と 10 進数値を区切るドットの代わりにコンマで書き込まれます。

このようにフォーマットされた値を正しくインポートする方法を知っている人はいますか?

サンプルデータ:

BMI;1;0;1;1;1;blue;-0,138812155;0,520378909;5;0;50;107;0;9;0;other;good;2011 BMI;1;0;1;1;1;pink;-0,624654696;;8;0;73;120;1;3;0,882638889;other;good;2011

ラピッドマイナーは実際にそれを「多項式」と解釈します。強制的に「実数」にすると、値「0」が正しく解釈されます。

ありがとう

4

3 に答える 3

3

これは非常に古いリクエストのようです。これがあなたを助けるかどうかはわかりませんが、これは同様の状況で他の人を助けるかもしれません。

ステップ1:[CSVの読み取り]オペレーターの[構成のインポートウィザード]で、区切り文字として[セミコロン]を選択していることを確認します

ステップ2:「GuessTypes」演算子を使用します。属性フィルタータイプ->サブセット、属性の選択->属性8、9、および16を選択し(上記の例に基づく)、「小数点文字」を「、」に変更すると、すべて設定されます。

これがお役に立てば幸いです(誰か!)

于 2012-12-04T21:16:57.287 に答える
0
public static void main(String args){
    BufferedReader br = new BufferedReader(new FileReader("c:\\path\\semicolons and numbers and commas.csv"));
    try {
        for(String line; (line=br.readLine()) != null);) {
            //Variable line now has a single line from the file. This code will execute for each line.
            String array = line.split(";");// Split on the semicolon. Beware of changing this. This uses regex which means that some characters mean something like . means anything, not just dots.
            double firstDouble = Double.parseDouble(array[7].replace(',','.')); // Get field 7 (the eighth field) and turn it into a double (high precision floating point). Replace , with . so it will not make an error
            System.err.println("Have a number " + firstDouble);
            System.err.println("Can play with it " + (firstDouble * 2.0));
        }
    }finally{
        br.close(); // Free resources (and unlock file on Windows).
    }
}
于 2011-05-04T20:11:06.547 に答える
0

区切り文字としてセミコロンを使用します。を使用java.util.Scannerして、各行を読み取ることができます。 String.split()セミコロンで分割します。コンマ付きのトークンを取得すると、コンマをString.replace()小数に変更するために使用できます。次に、使用できますFloat.parseFloat()

これがあなたの質問に答えることを願っています。

于 2011-05-04T20:08:01.087 に答える