2012-11-27 2 views
4

LibSVM 과학 형식의 부동 소수점 숫자를 사용할 수 있습니까?LibSVM은 과학 형식의 부동 소수점 숫자가있는 교육 파일을 허용합니까?

있는 기능 ...

index: 4 
value: 1.04515435733819E-05 

은 ... 같을 것이다 : 나는 -06에 이르기까지 그들의 지수와 부동 소수점 값이 가득 큰 교육 파일을 보내고 있습니다

4:1.04515435733819E-05 

을 ~ +31.

(참고 : 나는 특징 값의 형식에 대한 걱정
을 내가, 즉 교육 파일의 형식을 알고있다. label index:value index:value ...) 내가 비주얼 C++ 2010을 사용하고

과 나 ' 0 StringStreamWriter 클래스를 사용하여 value을 파일에 쓰십시오.

답변

3

LibSVM (v3.16)이 기능은 strtod() 읽을 수 모든 표기를 받아 들여야 값 읽어 stdlibdouble strtod(const char *, char **) 함수를 사용하여 점을 감안.

은 (, BTW 같은 아래의 코드에서 볼 수 있듯이 라벨,도, 부동 소수점 숫자를 할 수 있습니다 간다.) 문제의 코드가 svm-train.c 파일에서 void read_problem(const char *filename)에서 찾을 수 있습니다

LibSVM의 소스 코드 배포판.

여기가 read_problem(...)의 관련 부분의 스트립 다운 버전이다 변화

label = strtok(*line," \t\n"); 
problem->y[i] = strtod(label,&endptr);     // document label 
while (1) { 
    idx = strtok(NULL,":"); 
    val = strtok(NULL," \t"); 
    (*x_space)[j].index = (int)strtol(idx,&endptr,10); // feature index 
    (*x_space)[j].value = strtod(val,&endptr);   // feature value 
    ++j; 
} 
+0

...하지만 E-05에 E + 05 ... 데이터의 의미를 변경한다. 물론 완전한 데이터 세트를 음수 지수에서 양수 지수로 옮기려한다면, 나는 한계를 벗어나는 경향이 있습니다. – sanindya

관련 문제