Как использовать классификатор, полученный с помощью Pyml

#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?