2012-04-30 2 views
1

Java 코드를 사용하여 Weka 분류를 자동화하려고합니다. 내 CSV 파일을 읽으려고하면 다음 오류가 발생합니다.Java 코드에서 Weka CSVLoader를 사용할 때 Java IO 예외

java.io.IOException : 잘못된 값 수입니다. 읽기 98, 예상 97, 에서 3 행의 Token [EOL] 읽기 에서 weka.core.converters.ConverterUtils.errms (ConverterUtils.java:912), weka.core.converters.CSVLoader.getInstance (CSVLoader.java:747)) sun.reflect.NativeMethodAccessorImpl에서 Classifier_Search.main (Classifier_Search.java:178에서 Classifier_Search.readFile (Classifier_Search.java:18에서 weka.core.converters.CSVLoader.getDataSet (CSVLoader.java:570)))에 에서 java.lang.reflect.Method.invoke (알 수없는 소스)에서 sun.reflect.DelegatingMethodAccessorImpl.invoke (알 수없는 소스)에서 sun.reflect.NativeMethodAccessorImpl.invoke (알 수없는 소스)에서 .invoke0 (기본 방법) 에듀 .rice.cs.drjava.model.compiler.JavacCo mpake.runCommand (JavacCompiler.java:271)

Weka GUI를 통해 CSV 파일을 피드하려고하면 같은 오류가 발생합니다. 내가 아는 한, CSV 파일은 Weka에서 성공적으로 사용한 다른 CSV 파일과 다르지 않습니다. 이 오류의 원인이 될 수있는 것에 대한 의견이 있으십니까?

OldNabble에서 이에 대한 만족스러운 답변을 찾을 수 없었습니다. 검색 할 수있는 한 가지 제안을 시도했지만 제대로 작동하지 않았습니다. 한 가지 제안은 항목을 큰 따옴표로 묶어서 - 아무 것도 바뀌지 않았습니다. (I 물건을 업로드하는 방법을 모르는 때문에)

그냥 선명도를 들어, CSV 파일은 다음과 같이 :

C1V1, C2V1, C3V1, ... 클래스,

4000.5, 3890.6 , 2900.7, ... N,

...

...

행당 97 개 항목이있다. 다른 버전에서는 문자열과 문자 주위에 큰 따옴표가 있는데 (첫 번째 행과 마지막 열에 있음) 이전에 언급했듯이 그 점이 도움이되지 않습니다.

감사합니다.

+1

csv의 3 행에 문제가 있습니다.줄에 여분의 쉼표가 있습니까? – Rohit

+0

아니요. 파일을 검사했는데 모든 줄이 똑같이 보입니다. 그래도 감사합니다! – Nicole

+0

3 번 줄을 제거하면 작동합니까? – Rohit

답변

0

차이점을 발견했습니다. .csv 파일의 줄 끝에 쉼표가 있으면 csvloader가이 오류를 발생시킵니다. 따라서 이것을 사용하려는 경우 .csv 파일의 줄 끝 부분에있는 쉼표를 제거하십시오. 왜 라인 3과 라인 1과 2만이 에러를 던지지는지 모르겠다. (모든 라인은 동일하다.) 그러나 이것은 고쳐졌다.

1

weka 도구를 사용할 때도 같은 문제가있었습니다. 나는 이것을 이렇게 분류 할 수있었습니다.

enter image description here

당신은 이런 종류의 예외를 얻을 때. 프롬프트 된 행 위에있는 행을 찾으십시오. 예 : 제 경우에는 예외가 80542 라인의 일부 결함 때문에 발생 했으므로 80541 라인을 검사해야합니다. 그런 다음 줄에 여분의 쉼표 나 여분의 큰 따옴표가 있음을 알 수 있습니다. 여분의 쉼표 또는 큰 따옴표를 제거하고 파일을 저장하십시오. 다시 실행하십시오. 그런 다음 예외없이 제대로 작동합니다.