Применить сгенерированную функцию MATLAB к расширенному набору данных

В этом примере показано, как использовать небольшой набор данных измерений в Diagnostic Feature Designer для разработки набора функций, генерации и выполнения кода для вычисления этих функций для большего набора данных измерений и сравнения точностей модели в Classification Learner.

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

Пример, основанный на Анализе и Выборе характеристик для Диагностики насоса, использует данные отказа насоса из этого примера и вычисляет те же функции. Для получения дополнительной информации о шагах и обосновании операций разработки признаков, используя данные о отказе насоса в этом примере, смотрите Анализ и Выбор функций для диагностики насоса. Этот пример предполагает, что вы знакомы с размещением и операциями в приложении. Для получения дополнительной информации о работе с приложением смотрите пример , состоящий из трех шагов в Идентифицируйте индикаторы состояния для Проекта алгоритма прогнозирующего обслуживания.

Загрузка данных и создание сокращенного набора данных

Загрузите набор данных pumpData. pumpData представляет собой ансамблевую таблицу на 240 членов, которая содержит моделируемые измерения для потока и давления. pumpData также содержит категориальные коды отказа, которые представляют комбинации трех независимых отказов. Для примера - код отказа 0 представляет данные от системы без отказов. Код отказа 111 представляет данные от системы со всеми тремя отказами.

load savedPumpData pumpData

Просмотр гистограммы исходных кодов отказов. Гистограмма показывает количество представителей ансамбля, сопоставленных с каждым кодом отказа.

fcCat = pumpData{:,3};
histogram(fcCat)
title('Fault Code Distribution for Full Pump Data Set')
xlabel('Fault Codes')
ylabel('Number of Members')

Figure contains an axes. The axes with title Fault Code Distribution for Full Pump Data Set contains an object of type categoricalhistogram.

Создайте подмножество этого набора данных, которое содержит 10% данных или 24 представителей. Поскольку данные моделирования часто кластеризуются, сгенерируйте рандомизированный индекс, с помощью которого можно выбрать представители. В целях этого примера сначала используйте rng чтобы создать повторяемый случайный seed.

rng('default')

Вычислите рандомизированный вектор индекса с 24 элементами idx. Отсортируйте вектор так, чтобы индексы были в порядке.

pdh = height(pumpData);
nsel = 24;
idx = randi(pdh,nsel,1);
idx = sort(idx);

Использование idx чтобы выбрать строки представителей из pumpData.

pdSub = pumpData(idx,:);

Просмотрите гистограмму кодов отказов в сокращенном наборе данных.

fcCatSub = pdSub{:,3};
histogram(fcCatSub)
title('Fault Code Distribution for Reduced Pump Data Set')
xlabel('Fault Codes')
ylabel('Number of Members')

Figure contains an axes. The axes with title Fault Code Distribution for Reduced Pump Data Set contains an object of type categoricalhistogram.

Представлены все комбинации отказов.

Импорт сокращенного набора данных в Diagnostic Feature Designer

Откройте Diagnostic Feature Designer при помощи diagnosticFeatureDesigner команда. Импортируйте pdSub в приложение как мультипредставитель ансамбль.

Извлечение функций временной области

Извлеките функции сигнала временной области из сигнала потока и давления. На вкладке Feature Designer нажмите Временной Интервал Features > Signal Features и выберите все функции.

Извлечение функций частотного диапазона

Как описывает Analyze and Select Features for Pump Diagnostics, вычисление частотного спектра потока подчеркивает циклическую природу сигнала потока. Оцените частотный спектр с помощью Spectral Estimation > Power Spectrum с помощью опций, показанных как для потока, так и для давления.

Вычислите спектральные функции в полосе 25-250 Гц, используя показанные опции, для спектров потока и давления.

Оцените функции

Оцените свои функции с помощью Rank Features > FeatureTable1. Потому что faultCode содержит несколько возможных значений, приложение по умолчанию имеет значение One-Way ANOVA метод ранжирования.

Экспорт функций в Classification Learner

Экспортируйте набор функций в Classification Learner, чтобы можно было обучить классификационную модель. На вкладке Функции Ranking нажмите Экспорт > Экспорт Функций к Classification Learner. Выберите все функции, имеющие One-Way ANOVA метрика больше 1. Этот выбор включает все функции из pressure_ps_spec/Data_Wn2 и вверх.

Обучите модели в Classification Learner

Если щелкнуть Экспорт (Export), Classification Learner откроет новый сеанс. Примите 5-кратную перекрестную проверку и нажмите Start Session.

Обучите все доступные модели, щелкнув Все на вкладке Classification Learner, а затем Обучить.

Для этого сеанса высокая модель оценки, Boosted Trees, имеет точность около 63%. Ваши результаты могут варьироваться.

Сгенерируйте код для вычисления набора функций

Теперь, когда вы завершили интерактивную функции работу с небольшим набором данных, можно применить те же расчеты к полному набору данных с помощью сгенерированного кода. В Diagnostic Feature Designer сгенерируйте функцию для вычисления функций. Для этого на вкладке Ранжирование объектов выберите Экспорт > Сгенерировать функцию для Функций. Выберите те же 50 функции, которые вы экспортировали в Classification Learner.

При нажатии кнопки OK в редакторе появляется функция.

Сохраните функцию в локальную папку следующим diagnosticFeatures.

Применение функции к полному набору данных

Выполните diagnosticFeatures с полным p umpData ensemble, чтобы получить набор функций из 240 членов. Используйте следующую команду.

feature240 = diagnosticFeatures(pumpData);

feature240 представляет собой таблицу 240 на 51. Таблица включает переменную условия faultCode и 50 функции.

Обучите модели в Classification Learner с большей таблицей функций

Обучите классификационные модели снова в Classification Learner, используя feature240 на этот раз. Создадим новое окно сеанса с помощью следующей команды.

classificationLearner

В окне Classification Learner щелкните Создать сеанс > Из рабочей области. В окне New Session, в Data Set > Переменная набора данных, выберите feature240.

Повторите шаги, выполненные с набором данных из 24 членов. Примите 5-кратную перекрестную валидацию, запустите сеанс и обучите все модели.

Для этого сеанса самая высокая точность модели, достигнутая обоими Bagged Trees и RUSBoosted Trees, составляет около 80%. Снова, ваши результаты могут варьироваться, но они все еще должны отражать увеличение лучшей точности.