2016-04-02 4 views
1

Я использую классификатор шаблонов для классификации между двумя разными классами - помечены 0, 1. Я пытаюсь использовать MATLAB для генерации графиков Roc Curve для некоторых данных, созданных с использованием patternnet но мне трудно понять параметры, которые необходимо выполнить.график кривой ROC для классификатора нейронной сети с использованием perfcurve

[xTr, yTr, TTr, aucTr] = perfcurve(t, results.Data.y, 1); 

Я предполагаю, что: т вектор меток генерироваться, что государства, в котором класс принадлежит мои данные (шахта состоит из 0 и 1, и в размере 2x834) оценки является переменная созданная patternnet под названием ' results.Data.y '(2x834) posclass is 1. Но результаты должны быть вектором (размером 1x834), и я не знаю, какую строку выбрать?

ответ

0

Подробную информацию о функции perfcurve можно получить здесь: http://in.mathworks.com/help/stats/perfcurve.html Примеры весьма полезны.

Что касается вашего конкретного случая, т не предсказанный вектор, а вектор вы создаете сами маркировать свои тестовые данные, которые, очевидно, были бы 1xn (где п = 834 для вашего случая.)

Ваша оценка матрица будет m * n, где m - количество классов в ваших данных (это 2 для вашего случая). Поскольку вы говорите, что 1 ваш положительный класс, вы выберете столбец, который содержит оценку вашего положительного класса. Нечто вроде:

[xTr, yTr, TTr, aucTr] = perfcurve(t, results.Data.y(:,1), 1); 
plot(xTr, yTr); 
+0

Спасибо. Тогда, я был бы признателен, если бы мог объяснить мне часть следующего кода: (http://lamda.nju.edu.cn/code_CSNN.ashx) В файле LableFormatConvertion.m строка 50: 'prediction = ClassType (Я бы);'. @ArchitTaneja – ebrahimi

+0

@ebrahimi Я не уверен, что именно «метка» находится на входе, но чтобы ответить на ваш вопрос: , когда вы находите «id» с помощью max (Label), вы получаете индексы строк Label, где появляется максимальный элемент : например: для A = [1 9 -2; 8 4 -5], id будет [2, 1, 1], который показывает, что в первом столбце 8 является максимальным, а индекс строки равен 2. Теперь у вас есть кортеж как «id». Используя значения в 'id', вы получаете доступ к элементам массива ClassType. Например: Если ваш 'id' равен [2,1,1], а ClassType - [0,1], то «прогнозирование» будет [1,0,0]. i.e id (1) = 2 выбирает ClassType (2) = 1, id (2) = 1 будет отображать ClassType (1) = 0 и так далее. –

+0

Спасибо. На самом деле существует шесть алгоритмов для борьбы с несбалансированной классификацией. Например, рассмотрите передискретизацию, а затем, пожалуйста, посмотрите на sample_oversampling. m, так что понятно, что такое ярлык. Это моделируемый выход для тестовых данных. Моя проблема в том, что если мы изменим ClassType на [1,0], тогда результат будет обратным и как известно, какой из них правильно делать [0, 1] или [1, 0]. @ArchitTaneja – ebrahimi

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