Я использую WEKA для обучения Java-программы категоризации. Изначально категорий несколько, скажем, 10, и система должна работать с этими начальными категориями и начинать обучение. Для этого...:
String [] categories = {"cat1", "cat2", ..., "cat10"};
public SomeClassifier(String[] categories) {
// Creates a FastVector of attributes.
FastVector attributes = new FastVector(3);
// Add attribute for holding property one.
attributes.addElement(new Attribute(P1_ATTRIBUTE, (FastVector) null));
// Add attribute for holding property two.
attributes.addElement(new Attribute(P2_ATTRIBUTE, (FastVector) null));
// Add values attribute.
FastVector values = new FastVector(categories.length);
for (int i = 0; i < categories.length; i++) {
values.addElement(categories[i]);
}
attributes.addElement(new Attribute(CATEGORY_ATTRIBUTE, values));
// Create dataset with initial capacity of 25, and set index
Instances myInstances = new Instances(SOME_NAME, attributes, 25);
myInstances.setClassIndex(myInstances.numAttributes() - 1);
}
Хорошо, теперь время идет, и я хочу добавить новую категорию в свой тренировочный набор (скажем, «cat11»), который уже обучается с некоторым успехом. Как я могу это сделать? В документации WEKA сказано: «После создания атрибута его нельзя изменить». Итак, может быть, я могу вытащить атрибут из объекта экземпляров, воссоздать атрибут, а затем вставить его снова... или это все испортит?
Заранее спасибо.