더북(TheBook)

데이터 설정하기

.csv 파일에는 고객 한 사람의 구매 정보가 참(true) 또는 거짓(false)으로 저장되어 있다. 이를 머하웃이 처리하기 좋은 포맷으로 변환해야 한다. 머하웃에서는 아이템 ID가 콤마로 분리된 포맷이 편리하다. 이미 데이터베이스에서 아이템 ID를 만들었기 때문에 데이터 파일의 ID를 사용할 수 있다. 그러므로 머하웃은 각 장바구니에 대한 ID를 가진다.

새로운 자바 클래스 DataConverter(File > New > Class)를 만든다. 다음 자바 코드는 .csv 파일의 나머지 행을 읽어들이고 true 필드를 제품의 각 ID로 변환한다.


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
 
public class DataConverter {
 
    public DataConverter() {
        try {
            FileWriter outputWriter = new FileWriter(
                    “/path/to/your/data/output.dat”);
            int txcount = 0;
 
            BufferedReader csvReader = new BufferedReader(new FileReader(
                    “/path/to/your/data/rawdata.csv”));
 
            // 첫 번째 행을 읽지만 그것으로 무언가를 하진 않는다.
            String thisLine = csvReader.readLine();
            String[] tokens = thisLine.split(”,”);
            //
            int i;
            while (true) {
                thisLine = csvReader.readLine();
                if (thisLine == null) {
                    break;
                }
 
                tokens = thisLine.split(”,”);
                i = 0;
                boolean firstElementInRow = true;
                for (String token : tokens) {
                    if (token.trim().equals(“true”)) {
                        if (firstElementInRow) {
                            firstElementInRow =  false;
                        } else {
                            outputWriter.append(”,”);
                        }
                        outputWriter.append(Integer.toString(i));
                    }
                    i++;
                }
                outputWriter.append(“\n”);
                txcount++;
 
            }
            outputWriter.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public static void main(String[] args) {
        DataConverter dc = new DataConverter();
 
    }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.