Mahout 배우기(4)
4309 단어 Mahout
Mahout 학습(3)에서 나는 example 코드를 붙였는데 그 안에 벡터 파일을 생성하는 코드가 있었다.
InputDriver.runJob(input, directoryContainingConvertedInput, "org.apache.mahout.math.RandomAccessSparseVector");
Input Driver는 실제로는 Input Mapper라는 Map Reduce 프로그램을 시작합니다.java, 맵만 처리하고 출력은 벡터 파일, 코드
protected void map(LongWritable key, Text values, Context context) throws IOException, InterruptedException {
String[] numbers = SPACE.split(values.toString());
// sometimes there are multiple separator spaces
Collection<Double> doubles = Lists.newArrayList();
for (String value : numbers) {
if (!value.isEmpty()) {
doubles.add(Double.valueOf(value));
}
}
// ignore empty lines in data file
if (!doubles.isEmpty()) {
try {
Vector result = (Vector) constructor.newInstance(doubles.size());
int index = 0;
for (Double d : doubles) {
result.set(index++, d);
}
VectorWritable vectorWritable = new VectorWritable(result);
context.write(new Text(String.valueOf(index)), vectorWritable);
} catch (InstantiationException e) {
throw new IllegalStateException(e);
} catch (IllegalAccessException e) {
throw new IllegalStateException(e);
} catch (InvocationTargetException e) {
throw new IllegalStateException(e);
}
}
}
빨간색 마크업의 코드는 벡터를 생성할 때 데이터가 있는 것과 같은 강제적인 요구가 있을 수 있다
1 2 3
4 5 6 7
이러한 데이터는 입력으로서 통과할 수 없으며 반드시 데이터는
1 2 3 0
4 5 6 7
그래야 통과.
그러나 차원이 너무 많으면 부족한 차원을 스스로 수공으로 채워야 하기 때문에 바보스럽지 않을 수 없다.
그러나 Mahout이 자체로 가지고 있는 seq2encoded 방법은 부족한 부분을 무시할 수 있고 차원이 부족한 데이터도 벡터 파일을 성공적으로 생성할 수 있다.분석해 보니 코드에 죽도록 쓰여 있었다
Vector result = (Vector) constructor.newInstance(5000);
그것은 경계를 넘지 않도록 아주 큰 값을 지정합니다.이렇게 하면 입력 데이터가 길이가 같지 않아도 통과할 수 있다.
해결책을 알고 나서.
저희는 Input Mapper만java 소스 코드를 찾아서 새 InputMapper Local을 모방합니다.java 파일, constructor 수정.newInstance(5000);
마찬가지로 InputDriver를 찾아보세요.java 원본, 새 InputDriverLocal을 모방합니다.java 파일, Job set Mapper Class의 위치에서 Input Mapper Local을 사용합니다.클라스면 돼.
물론 벡터 코드에서도 InputDriverLocal 방법을 사용해야 한다.
부록:
InputMapper.자바 대응 원본 경로: ${Mahout Source Home}/integration/src/main/java/org/apache/mahout/clustering/conversion/InputMapper.java
InputDriver.자바 대응 원본 경로: ${Mahout Source Home}/integration/src/main/java/org/apache/mahout/clustering/conversion/InputDriver.java
Mahout 버전: 0.9
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
mahout 원본 분석의 Decision Forest 3부작의 3Test Forest먼저 TestForest를 호출하는 코드를 붙입니다. mahout 원본이 Job 작업 실행이 끝난 후에 마퍼의 출력을 삭제하고 파일을 저장한 것을 볼 수 있다(이것은 원본에서 볼 수 있다).그 다음은 정확도입니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.