지정된 정규 표현식과 일치하는 각 속성을 인스턴스 집합에서 제거해야하는 속성 필터가 있습니다.이름으로 특성 제거. 필터가 고장 났습니까?
RegEx에 문제가 있습니다.
나는 (regexr에서 테스트 한) 모든 것이 유효한 몇 가지 간단한 것을 시도했다. 하지만 필터가 필터를 허용하지 않는 것 같습니다.
관련 코드를 따르십시오.
Instances dataset1_x=new Instances(dataset1);
RemoveByName filterX=new RemoveByName();
filterX.setInputFormat(dataset1_x);
filterX.setInvertSelection(true);
filterX.setExpression(Pattern.quote("^.*i$"));
//filterX.setExpression("^.*i$"); also don't work
Instances dataset1_=Filter.useFilter(dataset1_x,filterX);
"i"로 끝나는 모든 이름과 일치해야합니다.
이 얻어진 데이터 세트
라는"셋 - weka.filters.unsupervised.attribute.StringToNominal-Rlast-weka.filters.unsupervised.attribute.Remove-weka.filters.unsupervised.attribute.RemoveByName- E ^. * id $ "
기본 표현식은 ^.*id$
입니다. 그것은 변하지 않았습니다.
filterX.getExpression();
은 전에 올바른 정규 표현식을 제공합니다. 또한이 필터의 사용법은 여러 가지 코드 예제에 해당합니다. 정규식을 사용하면 같음 Filter.setOptions();
이것은 버전 3.9.0 dev 및 3.8 stable의 문제입니다.
WEKA-GUI를 사용하면 필터가 올바르게 작동합니다.
따라서 다른 가정 프로그램 입력 한 경우이 입력을 설정하기 전에 표현과 InvertSelection 플래그를 설정해야합니다 ..
정확히 어떻게 받아들이지 않습니까? 또한,'i $'는 위의 정규 표현식의 적합한 (그리고 더 빠른) 버전일까요? – RamenChef
감사하지만 정규식은 접미사 'i'와만 일치합니까? 나는 그것을 시험 할 것이다. 이름이 정규 표현식과 일치하더라도 모든 속성을 필터링하지 않기 때문입니다. – Jan