Я совершенно новичок в машинном обучении, поэтому в некоторых случаях мое понимание может быть неправильным. Я пытаюсь проверить данные, загрузив сохраненную модель через Java-код, используя weka.
Instances testingData = readArffFile(testFile);
try
{
LibSVM cls = (LibSVM) weka.core.SerializationHelper.read(model);
Evaluation eval = new Evaluation(testingData);
eval.crossValidateModel(cls, testingData, 10, new Random(1));
//eval.evaluateModel(cls, testingData);
}
Когда я сохранял модель, я использовал перекрестную проверку. Теперь я немного запутался, использовать ли eval.crossValidateModel()
или eval.evaluateModel()
.
Если я использую evaluateModel()
, это дает мне неправильную точность (намного выше, чем должна быть). Я думаю, это потому, что строка <Evaluation eval = new Evaluation(testingData);>
обучает его на тех же данных, а затем тестирует на тех же данных. Это не то, чего я хочу. Я хочу протестировать данные на модели без обучения (думаю, модель сохраняется после обучения)
Если я использую eval.crossValidateModel()
, я думаю, что это все равно снова обучает модель, потому что, насколько мне известно, перекрестная проверка разбивает набор данных на k-кратность, а затем выполняет обучение на k-1, а затем проверяет оставшуюся кратность.
Итак, есть ли способ выполнить тестирование только с использованием этой загруженной модели?
Заранее спасибо.