В этом примере показано, как использовать небольшой набор данных измерений в 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')
Создайте подмножество этого набора данных, которое содержит 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')
Представлены все комбинации отказов.
Откройте 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, чтобы можно было обучить классификационную модель. На вкладке Функции Ranking нажмите Экспорт > Экспорт Функций к Classification Learner. Выберите все функции, имеющие One-Way ANOVA
метрика больше 1. Этот выбор включает все функции из pressure_ps_spec/Data_Wn2
и вверх.
Если щелкнуть Экспорт (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, используя feature240
на этот раз. Создадим новое окно сеанса с помощью следующей команды.
classificationLearner
В окне Classification Learner щелкните Создать сеанс > Из рабочей области. В окне New Session, в Data Set > Переменная набора данных, выберите feature240
.
Повторите шаги, выполненные с набором данных из 24 членов. Примите 5-кратную перекрестную валидацию, запустите сеанс и обучите все модели.
Для этого сеанса самая высокая точность модели, достигнутая обоими Bagged Trees
и RUSBoosted Trees
, составляет около 80%. Снова, ваши результаты могут варьироваться, но они все еще должны отражать увеличение лучшей точности.