WEKA GUI를 사용하여 J48 모델을 교육하고 작성했습니다. 모델 파일을 내 컴퓨터에 저장 했으므로 이제 Java 코드의 단일 인스턴스를 분류하는 데이 파일을 사용하고 싶습니다. 나는 "cluster"속성에 대한 예측을하고 싶습니다.Weka의 단일 인스턴스 분류
public void classify(double lat, double lon, double co)
{
// Create attributes to be used with classifiers
Attribute latitude = new Attribute("latitude");
Attribute longitude = new Attribute("longitude");
Attribute carbonmonoxide = new Attribute("co");
// Create instances for each pollutant with attribute values latitude, longitude and pollutant itself
inst_co = new DenseInstance(4);
// Set instance's values for the attributes "latitude", "longitude", and "pollutant concentration"
inst_co.setValue(latitude, lat);
inst_co.setValue(longitude, lon);
inst_co.setValue(carbonmonoxide, co);
inst_co.setMissing(cluster);
Classifier cls_co = (Classifier) weka.core.SerializationHelper.read("/CO_J48Model.model");//load classifier from file
// Test the model
double result = cls_co.classifyInstance(inst_co);
}
는 그러나, 나는 선 inst_co.setValue(latitude, lat);
상의 IndexArrayOutofBoundsException를 얻을 : 내가 뭘하면 다음과 같다. 이 예외에 대한 이유를 찾을 수 없습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 감사하겠습니다.
위대한 답변에 감사드립니다. 명확히하기 위해 classA와 classB가 분류의 가능한 결과입니다 (예 : 클러스터 이름). 나는 그들이 모델을 만드는 동안 사용 된 것들과 동일 할 필요가 있다고 생각한다. – Erol
작동하지 않습니다. weka.core.UnassignedDatasetException가 발생합니다 : DenseInstance가 데이터 세트에 액세스 할 수 없습니다! 오류. 데이터 세트에 그것을 할당해야 할 것 같네요. 아마도 그것을 훈련시키는 데 사용 된 것일 겁니다. – Erol
@babatenor 동일한 헤더가있는 데이터 세트에 할당해야합니다. 그들의 헤더 정보는 동일해야합니다 –