Tôi đã đào tạo và tạo mô hình J48 sử dụng WEKA gui. Tôi đã lưu tệp mô hình vào máy tính của mình và bây giờ tôi muốn sử dụng nó để phân loại một cá thể đơn lẻ trong mã Java của tôi. Tôi muốn nhận được một dự đoán cho thuộc tính "cluster". Những gì tôi làm là như sau:Phân loại đơn lẻ trong 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);
}
Tuy nhiên, tôi nhận được một IndexArrayOutofBoundsException trên dòng inst_co.setValue(latitude, lat);
. Tôi không thể tìm ra lý do cho ngoại lệ này. Tôi sẽ đánh giá cao nếu ai đó có thể chỉ cho tôi đi đúng hướng.
Cảm ơn bạn đã có câu trả lời tuyệt vời. Chỉ cần làm rõ, classA và classB là kết quả có thể có của phân loại, tức là tên cụm của tôi, phải không? Tôi đoán họ cần phải giống với những cái được sử dụng trong khi tôi đang tạo mô hình. – Erol
Không hoạt động, tôi nhận được weka.core.UnassignedDatasetException: DenseInstance không có quyền truy cập vào tập dữ liệu! lỗi. Đoán tôi sẽ phải gán nó cho một tập dữ liệu, có lẽ cái tôi dùng để huấn luyện nó? – Erol
@babatenor bạn cần gán cho tập dữ liệu có cùng tiêu đề. Thông tin tiêu đề của chúng phải giống nhau –