2013-08-08 2 views
1

간단하고 빠른 의심. 내 ARFF가 다음과 같이 표시됩니다.Weka 레이블이 지정되지 않은 속성 ... 분류 할 인스턴스의 일부 여야합니까?

@attribute outlook { sunny, overcast, rainy } 
@attribute temperature numeric 
@attribute humidity numeric 
@attribute windy { TRUE, FALSE } 
@attribute play { yes, no } 

@data 
sunny, 85, 85, FALSE, no 
sunny, 80, 90, TRUE, no 
overcast, 83, 86, FALSE, yes 
rainy, 70, 96, FALSE, yes 
rainy, 68, 80, FALSE, yes 
...... 

5 속성 (클래스 속성없이 4). 클래스를 분류 할 인스턴스를 만들 때 속성 클래스의 값을 도입해야합니까? 처럼 "?" 또는 "-1"또는 이와 유사한 것. 그것은 무엇인가 바뀌 었습니까? 예 :

ArrayList<Double> featureVector = new ArrayList<Double>(); 
featureVector.add((double) 0); 
featureVector.add((double) 85); 
featureVector.add((double) 85); 
featureVector.add((double) 1); 
//featureVector.add((double) -1); -> Class attribute 

Instances instances = classification.featureVectorToInstances(featureVector); 
result = classification.classifyInstanceToString(instances.firstInstance()); 

그리고 기능 :

공공 인스턴스 featureVectorToInstances (ArrayList를 featureVector) {

Instances instances = new Instances("Instances", attributes, 0);  
DenseInstance instance = new DenseInstance(attributes.size()); 

for(int i = 0; i < featureVector.size(); i++) 

    instance.setValue(i, featureVector.get(i)); 

instances.add(instance);  
//Set class attribute 
instances.setClassIndex(attributes.size()-1); 

return instances; 

}

공공 문자열 classifyInstanceToString (인스턴스 레이블이없는)는 예외 {

발생
double clsLabel = cModel.classifyInstance(unlabeled); 
unlabeled.setClassValue(clsLabel); 
return unlabeled.classAttribute().value((int)clsLabel); 

} 미리

+0

사람 ?? 1 주일이 지났지 만 아직 정답이 ... ... ( – Rafag

답변

0

에서

덕분에 내가 제대로 이해하는 경우는 :

당신은 기차 intances 레이블을 제공해야합니다. 이유 : 학습 알고리즘은 학습 데이터를 사용하여 모델을 만든 다음 모델을 사용하여 새 인스턴스를 분류 한 다음 원래의 레이블과 비교하여 자신의 클래스 예측을 평가합니다. 따라서 레이블이 없으면 알고리즘 성능을 평가할 수 없습니다.

+0

음, 나는 자신에 대해 잘 설명해 주 었는지는 모르겠다. 예, 기차 인스턴스에 대한 라벨을 제공하는 것이 필요하지만, 내가 의미하는 바는 우리가 클래스 속성 값 (레이블, 우리가 알아 내고자하는 것)을 분류하기를 원하는 모든 인스턴스에. 필자는 메인 포스트에 코드를 추가한다. 아마도 더 명확 할 것이다. – Rafag

관련 문제