#python #dataset #svm #libsvm #pyml
#python #набор данных #svm #libsvm #pyml
Вопрос:
Я новый пользователь PyML в Python. Используя руководство, я сделал следующее:
from PyML import *
data = SparseDataSet("heart")
s = SVM()
s.train(data)
r = s.cv(data,5)
Я получил результирующий набор r
, но я не понимаю, как использовать этот результирующий набор для классификации совершенно нового экземпляра с помощью Python. Может ли мне помочь кто-нибудь более опытный? Любые предложения будут оценены.
Спасибо.
Ответ №1:
В r = s.sv(data,5)
вы выполняете перекрестную проверку, которая используется для измерения производительности классификатора путем 5-кратного обучения и тестирования в разных частях набора данных. В этом нет необходимости, когда ваша цель — классифицировать новые экземпляры.
Для классификации новых экземпляров желательно иметь их в другом наборе данных и использовать метод тестирования объекта SVM после обучения:
s = SVM()
s.train(trainingDataset)
r = s.test(testDataset)
Затем вы получите результаты классификации новых экземпляров в testDataset.
Одним из вариантов использования s.test()
является использование s.classify(data, i)
и s.decisionFunc(data, i)
для классификации отдельных точек данных после обучения, но это не рекомендуется в документации к учебнику, поскольку вы не получите дополнительную информацию о результате, содержащуюся в результирующем объекте (как вы получаете из методов s.test
, s.cv
или s.stratifiedCV
).
Комментарии:
1. Если вы хотите проверить, к какому классу была отнесена каждая точка данных, вам нужно использовать r.getPredictedLabels()
2. Извините, что возвращаюсь к этому, но мне не кажется, что s.test можно использовать для классификации новых экземпляров. Кроме того, каков аргумент i в s.classify, s.decisionFunc?