2012-04-01 6 views
2

scatter plot Ниже приведен код Matlab для классификатора Байеса, который классифицирует произвольные числа в свои классы.Коэффициент ошибок и точность классификации классификации

training = [3;5;17;19;24;27;31;38;45;48;52;56;66;69;73;78;84;88]; 
    target_class = [0;0;10;10;20;20;30;30;40;40;50;50;60;60;70;70;80;80]; 

     test = [1:2:90]'; 
    class = classify(test,training, target_class, 'diaglinear'); % Naive Bayes classifier 
[test class] 

(а) Если кто-то может предоставить фрагменты кода для вычисления ошибки Байеса для некорректного и точности. Я просмотрел документацию Matlab относительно [class,err]=classify(...). Но я не могу следовать этому и работать.

(b) Также, как построить график рассеяния и гистограмму, указывающую количество точек данных, принадлежащих разным классам? Я пробовал с scatter(training(:),target_class(:)), но он дает что-то еще!

(c) Как работать с crossvalidate()? Пример действительно поможет. Спасибо.

ответ

2

(a) Для того, чтобы рассчитать ошибочную ошибку вы должны знать test_class. Затем вы можете сравнить выходную переменную class с test_class.

misserr = sum(test_class~=class)./numel(test_class); 

Если у вас нет тестовых классов второго выходного аргумент err даст вам оценку ошибки классификации применения сгенерированной модели на обучающем множестве.

(б) Если у вас есть только два фактора (столбцы) в учебных наборов данных вы можете просто сделать

scatter(training(:,1),training(:,2),[],target_class) 

Соответственно, вы можете использовать SCATTER3 для 3-х факторов.

Для получения дополнительных факторов вы можете выполнить анализ основных компонентов с помощью PRINCOMP и построить 2 или 3 первых компонента.

ОБНОВЛЕНИЕ: Я пропустил, что на самом деле у вас есть только один фактор. Ваш оператор рассеяния может работать очень хорошо. Почему вам это не нравится? Вы также можете покрасить точки по-разному, добавив target_class в качестве 4-го аргумента. Вы также можете обменять 1-й и 2-й аргументы, чтобы было лучшее представление.

(с) Вы можете выполнить CV с CROSSVAL и CVPARTITION функций из статистического Toolbox. См. Документацию по полезным примерам.

Вот еще один вопрос: How to use a cross validation test with MATLAB? с несколькими дополнительными опциями.

+0

Привет. Благодарю вас. (B) Когда я использую диаграмму рассеяния, я получаю несколько графиков линий вместо точек разброса. Не могли бы вы предоставить правильный код для одного столбца/данных фактора? (c) Цель использования cv для моего случая - сравнить эффективность двух или более классификаторов, в данном случае байесов против k-nn, PCA и т. д. Итак, как мне использовать CV, я имею в виду, какие параметры должны быть поданы для сравнительная цель. Я считаю, что ваши примеры легче следовать, чем Matlab! – Chaitali

+0

Вы не должны получать строки с вашим заявлением о разбросе. Я пробовал «разброс (обучение, те (размер (обучение)), [], target_class), и он работал хорошо. Ось и цвет Y зависят от 'target_class'. – yuk

+0

Вы не можете применять все эти классификаторы с помощью CLASSIFY. Он имеет только 4 типа классификаторов. Я считаю, вы можете сделать это с перекрестной проверкой. См. Например, пример 2 в документе для CROSSVAL. Вам нужно будет предоставить различные функции прогнозирования (кроме классификации). Он вернет коэффициент пропускания, который вы можете использовать для сравнения различных функций. – yuk

Смежные вопросы