Университет Хартфордшира
Школа компьютерных наук
Магистр искусственного интеллекта с робототехникой
7COM1039-0109-2020 — магистерский проект Advanced Computer Science
17 сентября 2021 г.
Моделирование болезни Паркинсона
Кундж Кингер
18054039
Руководитель – д-р Манал Хелал
Заключительная декларация проекта магистратуры
Этот отчет представлен в частичном выполнении требований для получения степени магистра наук в 7COM1039-0109-2020-Advanced Computer Science Masters Project в Университете Хартфордшира (UH).
Это моя собственная работа, за исключением случаев, когда в отчете указаны двойные кавычки. Я не использовал людей в своем проекте MSc.
Настоящим я даю разрешение на публикацию отчета на веб-сайте университета при условии указания источника.
Благодарность
Я хотел бы выразить особую признательность д-ру Манал Хелал, который поощрял, мотивировал и исправлял ошибки, а также помогал развивать мой проект на протяжении всего проекта. Без ее обширной помощи выполнить эту работу было бы невозможно. Я также благодарен другим преподавателям, которые руководили мной во время проекта.
Я хотел бы продолжить свои размышления перед сотрудниками LRC, которые прямо или косвенно помогли мне завершить этот проект.
Я хотел бы выразить свою глубочайшую благодарность родителям всех моих друзей за оказание мне технической и нетехнической поддержки в завершении этого проекта и за помощь, предоставив поддержку и возможность учиться за границей.
Аннотация
Искусственный интеллект (ИИ) играет жизненно важную роль в области медицинских испытаний и моделирования заболеваний во время клинических испытаний. Этот проект основан на болезни Паркинсона (БП), которая на момент написания статьи не лечилась. Тем не менее, с помощью ИИ это может привести к пониманию динамики заболевания на основе наборов данных биоинформатики, связанных с болезнью Паркинсона. Этот проект помог понять поведение генов, проблему классификации для обнаружения БП, анализ временных рядов генов и вероятностное графическое моделирование генов. В будущем могут появиться шансы с помощью ИИ смоделировать другие заболевания, чтобы понять их динамику в клетке человека.
Рисунок 1 (гены и способы наследования) (Hopkins, 2019)
2.1.2 Пути развития
Гены, унаследованные от родителей к детям, могут подвергаться некоторым мутациям, таким как вставки, делеции или изменения их молекулярных коды. Любые мутации генов, связанных с двигательными движениями, вызывают нарушение проводящих путей, и роль проводящих путей заключается в том, чтобы связываться с различными частями мозга или с мышцами. Типы путей представлены в Таблице 1:
Таблица 1. Типы путей
(Andrusca, 2021)
Согласно (Andrusca, 2021) «Болезнь Паркинсона является наиболее распространенным заболеванием, связанным с базальными ганглиями. . Это результат дегенерации дофаминергических нейронов компактной части черной субстанции». Черная субстанция является местом происхождения дофаминергических нейронов, а точечная мутация в альфа-синуклеине может вызывать появление телец Леви. Этот проект основан на моделировании агрегации Asyn, которое представляет собой тип механического моделирования молекулярного пути при болезни Паркинсона. Asyn является аутосомно-доминантным геном БП и точечной мутацией в одной аминокислоте. Более того, он является основным компонентом образования телец Леви и нейритов (патологический признак БП). Дупликация и тройная репликация являются факторами риска неправильного фолдинга между Asyn и протеасомами, что отвечает за очистку неправильно фолдинговых белков и вызывает аномальную функцию лизосом. (Сасидхаракуруп и др., 2017 г.)
Рисунок 2. Пути развития болезни Паркинсона (Brundin et al., 2002)
2.1.3 Дофаминергические пути:
Дофаминергические пути напрямую связаны с черной субстанцией. Согласно (Sasidharakurup et al., 2017) «В нескольких исследованиях сообщалось, что митохондриальные АФК запускают апоптоз, активируя каскад каспаз». АФК производятся, когда происходит синтез дофамина. Более того, окислительное повреждение происходит из-за дефицита GSH (глутатиона). Существуют и другие белки, которые влияют на уровень АФК, и это паркин и LLRK2, как показано на рисунке ниже. Паркин помогает в проверке уровня АФК в митохондриальных клетках, и другая основная работа Паркина заключается в проверке мутаций функции потери гена (Sasidharakurup et al., 2017). Если в паркине произойдет еще какая-либо мутация, это может привести к гибели клеток или дофаминовых нейронов и снова вызвать БП. Другим основным классом белков является LLRK2 (аутосомно-доминантный), его мутация встречается с высокой частотой и может вызывать фактор высокого риска БП.
Рис. 4. Блок-схема scikit-learn (Pedregosa et. al., KMLR 12, pp. 2825-2830, 2011)
Случайный лес: это алгоритм обучения с учителем. Судя по названию, это лес, а леса состоят из деревьев. Вот почему он называется случайным лесом, поскольку он строится из ансамбля деревьев решений, которые в основном обучаются с использованием метода «бэггинга». Метод мешков — это комбинация моделей обучения, которая увеличивает общий результат. Поэтому на графике точность плохая. Рекомендуются ансамблевые методы (Donges, 2021). Основное преимущество Random Forest в том, что его можно использовать как в задачах классификации, так и в задачах регрессии. Для набора данных «А» использовался классификатор случайного леса. Согласно (Donges, 2021) «Случайный лес добавляет модели дополнительную случайность при выращивании деревьев. Вместо того, чтобы искать самую важную функцию при разделении узла, он ищет лучшую функцию среди случайного подмножества функций. Это приводит к широкому разнообразию, которое обычно приводит к лучшей модели».
2.2.5 Метрики оценки для задачи классификации: Для метрик оценки обязательно понимать эти 4 параметра, которые описаны ниже, доступ к которым можно получить через матрицу путаницы на рисунке 5:
Матрица путаницы на рис. 5 (Джоши, 2016 г.)
Истинно положительный: это правильно предсказанные положительные значения в качестве фактического значения, которые можно записать как (да (P), да (A))
Истинно отрицательный: Эти значения являются правильно предсказанными отрицательными значениями как фактические значения, которые являются нет (Нет (P), Нет (A))
Ложно-отрицательный: Это также известно как ошибка типа 2, в которой фактическое значение да, но модель прогнозирует как нет, и эта ошибка вообще опасна. Например, человек страдает от болезни (фактическое истинное значение), но модель предсказывает, что человек не страдает от болезни (прогнозируемое значение). (Нет(P), Да(A))
Ложноположительный результат: эта ошибка также известна как ошибка типа 1, при которой модель предсказывает «да», но фактическое значение равно «нет». (Да (P), Нет (A))
Зная эти 4 основных параметра, легко рассчитать точность, точность, отзыв и показатель f1.
Точность: сумма положительных значений к сумме всех значений. TP+TN/TP +TN+FP+FN.
Точность: определяется как отношение TP к общему количеству положительных прогнозируемых значений. TP/TP+FP
Напомним: его можно определить как отношение правильно предсказанных положительных значений к наблюдениям в реальном классе для положительных значений. TP/TP+FN.
Оценка F1: это средневзвешенное значение точности и полноты. Он учитывает обе ошибки, и его немного сложно понять по сравнению с точностью. Но это работает лучше, если речь идет о неравномерном распределении классов. 2*(отзыв*точность)/(отзыв + точность)
Эти 4 параметра имеют решающее значение для оценки проблемы классификации, и к ним можно получить доступ через scikit, используя отчет о классификации. Тем не менее, когда для прогнозирования вероятности бинарных результатов полезным инструментом для этого является кривая ROC. Это график частоты ложноположительных результатов (ось x) и частоты истинно положительных результатов (ось y), а пороговое значение находится в диапазоне от 0 до 1.
Частота истинно положительных результатов (чувствительность) = TP / TP+FP
специфичность = TN/TN+FP
FPR (частота ложноположительных результатов) = 1 – специфичность = FP/TN=FP
Рис. 8. Гиперпараметры модели SARIMA
(Bhardwaj, 2021)
Рис. 8. B. Математическое уравнение SAIMAX (Bhardwaj, 2021)
Модели глубокого обучения. Эти модели являются широко используемыми и наиболее популярными моделями машинного обучения и основаны на концепциях моделирования человеческого мозга, которые позволяют компьютеру запоминать информацию, необходимую для задача. Глубокое обучение для этого проекта использовалось для анализа временных рядов, который также известен как данные последовательности. Для этой части использовалась RNN (рекуррентная нейронная сеть), и эти модели состоят из двух основных частей: входных данных и скрытого состояния, которое собирает результаты из предыдущих узлов или состояний. Объединение этих двух частей дает некоторый результат, который можно передать следующему узлу. Последовательные данные слишком длинные, что считается одной из основных проблем для RNN, и эту проблему можно решить с помощью LSTM (долгосрочная память) или GRU (Gated-Recurrent Unit).
LSTM: долговременная память работает, имея состояние ячейки, которое содержит состояние каждого узла, с помощью которого можно отменить результаты, полученные из предыдущих состояний, и использовать ворота в качестве управления потоком. Ячейки LSTM сконфигурированы с 4 основными воротами: входными воротами, входными воротами модуляции, воротами забывания и выходными воротами. Входной вентиль для сбора входных сигналов. Входной вентиль модуляции принимает входные данные с выхода ячейки LSTM на последней итерации. Ворота забывания решают, когда забыть результаты вывода, и выбирают только оптимальную задержку по времени для входной последовательности. Выходной вентиль принимает вычисленные результаты и генерирует выходные данные для ячейки LSTM.
GRU: GRU по функциональности почти не отличается от алгоритма LSTM. В GRU каждый узел обрабатывается путем объединения шлюза забывания и шлюза ввода и рассматривается как шлюз сброса в шлюз обновления. Кроме того, он включает состояние ячейки и скрытое состояние. Преимущество использования GRU заключается в более простой архитектуре алгоритма и небольшом количестве требуемых параметров для генерации последовательных данных.
В этом проекте использовалось ГРУ. Однако архитектура данных моделей показана на рисунке 9:
Рисунок 10 Архитектура ANN (Castrounis)
A - Экспонента фрактального масштабирования сигнала
распространение1, распространение2, PPE - Три нелинейных показателя вариации основной частоты
В таблице 2 показаны первые 5 пациентов в столбцах с названием признака в первом столбце.
Таблица 2 : Обнаружение болезни Паркинсона (БП) на основе набора данных Kaggle
Имя
phon_R01_S01_1
phon_R01_S01_2
phon_R01_S01_3
phon_R01_S01_4
phon_R01_S01_5
MDVP:Fo( Гц)
119,992
122,4
116,682
116,676
116,014
МДВП:Fhi(Гц)
157,302
148,65
131,111
137,871
141,781
MDVP:Flo(Hz)
74,997
113,819
111,555
111,366
110,655
MDVP:Джиттер(%)
0,00784
0,00968
0,0105
0,00997
0,01284
MDVP:Джиттер(Abs)
0,00007
> 0,00008
0,00009
0,00009
0,00011
МДВП:РАП
0,0037
0,00465
0,00544
0,00502
0,00655< br /> MDVP:PPQ
0,00554
0,00696
0,00781
0,00698
0,00908
Джиттер:DDP
0,01109
0,01394
0,01633
0,01505
0,01966
МДВП:Шиммер
0,04374
0,06134
0,05233
0,05492
0,06425
МДВП : Мерцание (дБ)
0,426
0,626
0,482
0,517
0,584
Мерцание: APQ3
0,02182
0,03134
0,02757
0,02924
0,0349
Шиммер:APQ5
0,0313
0,04518
0,03858
0,04005
0,04825
МДВП: APQ
0,02971
0,04368
0,0359
0,03772
0,04465
Shimmer:DDA
0,06545
0,09403
0,0827
0,08771
0,1047
NHR
0,02211
0,01929
0,01309
0,01353
0,01767
HNR
21,033
19.085
20.651
20.644
19.649
Статус
1
1
1
1
1
RPDE
0,414783
0,458359
0,429895
0,434969
0,417356
DFA
0,815285
0,819521
0,825288
0,819235
0,823484
спред1
-4,81303
-4,07519
-4,44318
-4,1175
-3,74779
спред2
0,266482
0,33559
0,311173
0,334147
0,234513
d2
2,301442
2,486855
2.342259
2.4055554
2.342259 /> 2,33218
СИЗ
0,284654
0,368674
0,332634
0,368975
0,410335
Подробности и важность набора данных «C»:
Этот набор данных был первоначально подготовлен UCL и собран из репозитория GitHub https://github.com/AMDonati/parkinson-disease-project/tree/master/data/UCI-MLrepo. -PD и был доступен в формате .txt. Набор данных был разделен на 2 категории здоровых и пациентов с болезнью Паркинсона, в которых испытуемых просили нарисовать шаблоны, которые далее характеризовали в три категории, которые представлены в столбце идентификатора теста с 0: статический спиральный тест (нарисуйте заданный спиральный шаблон), 1: динамический Спиральный тест (Спиральный узор будет мигать через определенное время, поэтому испытуемые должны продолжать рисовать), 2: Тест кругового движения (Субъект рисует круги вокруг красной точки). В таблице 4 ниже показаны атрибуты с некоторыми строками в качестве примера:
Таблица 4: Данные временного ряда
тип_пациента
x
y
z
давление< br /> Gripangle
метка времени
testid
тип_пациента
t_main
c_002
199
202
0
126< br /> 860
1732464831
0
управление
0
c_002
199
202
0
202< br /> 860
1732464838
0
управление
7
c_002
199
202
0
276< br /> 860
1732464845
0
управление
14
c_002
199
202
12
328< br /> 860
1732464852
0
управление
21
Координаты были записаны как x, y и z, и любые изменения этих значений отслеживались с использованием столбца идентификатора теста. Частота времени увеличивалась каждые 7 секунд для контрольных пациентов и 9 секунд для пациентов с болезнью Паркинсона. Для моделей SARIMAX были выбраны 2 пациента обоих типов для проверки поведения при надавливании на рисунки с разным тестом Id. Тем не менее, для модели RNN наблюдались 5 контрольных и 5 пациентов с болезнью Паркинсона.
Подробности и важность набора данных 'D':
Набор данных был первоначально загружен с https://zenodo.org/record/2867216#.YUM8DZ1Kg2z, а необработанные данные содержат файлы .wav из здоровых и контролируемых пациентов, у которых данные записывались через смартфон Motorola Moto G4. В этом наборе данных участник просит прочитать:
Процесс чтения текста: «Северный ветер и солнце», «Технология. Компьютерные приложения во фрагменте географии».
Спонтанный процесс: спонтанный диалог с участником, в котором исполнитель теста просит зачитать случайные вопросы о достопримечательностях, местном трафике или личных интересах, если это применимо.
Файл csv был создан мной, в котором все файлы прочитанного текста записаны как процесс 1 и спонтанно как процесс 2 как для здоровых, так и для пациентов с болезнью Паркинсона с меткой класса.
В таблице 4 ниже показаны атрибуты с некоторыми строками как пример для формата csv:
Таблица 4 аудио в формате csv
Приведенные выше гиперпараметры хранятся в структуре данных словаря с переменной сеткой, которая содержит всего 6 * 5 * 2 * 3 * 3 = 540 возможных комбинаций, затем эти гиперпараметры передаются в модель с функциями:
Feature
value
Estimator
clf
param_distributions
grid
n_iter
10
Cv
5
> подробный
2
Вышеупомянутые функции использовались и передавались в модель, функция оценки использовала clf, который только что использовался для инициации классификатора случайного леса, param_distributions — это вышеуказанные параметры, которые хранятся в сетке переменных, n_iter означает, сколько раз модель будет повторять через data cv — это перекрестная проверка, используемая для защиты от переобучения модели, особенно на ограниченных выборках данных. Модель запускает анализ для каждой складки, а затем дает среднее значение общей оценки. Методом проб и ошибок рекомендуется 5-кратная перекрестная проверка, доказывающая, что 5-кратная перекрестная проверка дает наилучшие результаты для этого набора данных. Verbose просто проверяет весь вывод. Весь код прилагается в приложении.
Гиперпараметр, используемый для cv поиска по сетке (при таком подходе все гиперпараметры в доступной сетке проверяют все возможные комбинации для обучения модели и оценки для тестовых данных).< br /> Параметры
Значения
N_estimators
100 200 500
max_depth
Нет
max_features
auto, sqrt
min_samples_split
6
min_samples_leaf
1,2
Вышеуказанные гиперпараметры хранятся в формате словаря с переменной grid_2, которая содержит всего 3*1*2*1*2 = 12 возможных комбинаций, затем эти гиперпараметры затем передаются в модель с функциями:
Feature
value
Estimator
clf
param_distributions
grid_2
Cv
5
verbose
2
Во-первых, для анализа поведения голоса были построены два графика: один для Паркинсона и 1 для здоровых с использованием librosa, затем функции MFCC были извлечены со стандартной скоростью librosa, а заданное n_mfcc было равно 40, затем функции MFCC были масштабированы со средним значением. голосовых данных. После получения всех признаков были взяты независимые переменные (x), все масштабированные признаки MFCC, а зависимая переменная (y) рассматривалась как тип класса пациентов. Затем с использованием scikit-learn для переменных x и y было выполнено разделение обучения и тестирования с 80% обучением и 20% тестированием со случайным состоянием 101.
Используемая модель:
Модель Энн использовалась для этой части. в которой Последовательная модель была определена следующим образом:
слой
единицы
активация
отсев
1
100
отн
0,5< br /> 2
200
отн
0,5
3
100
отн
0,5
4
1 сигмовидная
В модели использовалось 200 эпох, а размер партии составлял 128.
Глава 4. Эксперименты и результаты
Эксперименты проводились отдельно с использованием разных методов. Все эти методы были протестированы с различными гиперпараметрами для лучшей оценки. В этой главе показаны результаты и их оценка на основе различных методов, использованных в предыдущей главе.
4.1.0 Эксперименты и результаты набора данных «A». Поскольку целевыми значениями для этой задачи была бинарная классификация, доступная как «статус» в наборе данных. Итак, хорошо знать корреляцию набора данных со столбцом состояния. Результат корреляции показан как
Рисунок 11: Корреляция всего набора данных
Из рисунка 11 можно сделать вывод, что 3 функции с наибольшей корреляцией со столбцом состояния: «распространение1» с 0,56, «PPE» с 0,53 и «распространение2» с 0,45. Теперь, зная функции с наивысшей корреляцией, давайте проверим поведение этих функций. Для проверки связи между этими функциями был использован relplot из морской библиотеки.
(A) (B)
(C)
Рисунок 12: (A) график связи между разбросом 1 и спред 2, (B) график взаимосвязи между спредом 1 и PPE и (C) график взаимосвязи между спредом 2 и PPE
Все три корреляции, показанные на рисунке 12, следуют линейному тренду, однако спред1 по сравнению с спредом2 и спрэд2 по сравнению с PPE имеет высокая дисперсия, что означает, что они широко разбросаны по среднему значению, тогда как разброс 1 по сравнению с PPE показывает идеальную линейную тенденцию с меньшей дисперсией. Чтобы собрать дополнительную информацию, давайте проверим только функции spread1 и PPE. Давайте изучим состояние с PPE и по-разному распределим 1, используя сетку Facet, поскольку она делает подграфик 0 или 1 по-разному.
(A)
(B)
Рисунок 13 (A) График сетки Facet состояния с отображением PPE, (B) Диаграмма состояния Facet Grid с отображением разброса1
На рисунке 13 показано нормальное распределение, которое представляет собой непрерывное распределение вероятностей, симметричное относительно среднего значения, и с помощью этого графика легко наблюдать более высокие значения признаков в случаях ПД. После проверки признаков было применено моделирование, которое обсуждалось в главе о методах. Итак, пришло время проверить, какая модель работала лучше, и все эти модели применялись после использования с разными гиперпараметрами. Результаты моделей были нанесены на гистограмму, показанную на рис. 14. Она отображает выходные данные функции Python Assessment_preds, которая возвращает точность, точность, полноту и оценку f1 в форме структуры данных словаря. Оцениваемыми моделями были baseline_metrics, возвращающие метрики для обычной модели классификатора Random Forest, rs_metrics для рандомизированного поиска и gs_metrics для поиска по сетке.
Рисунок 14: Оценка классификации
Другая оценка была выполнена с использованием ROC_curve, и результаты показаны на Рисунке 15, Рисунке 16 и Рисунке 17.
Рис. 15 Кривая динамического сопротивления gs
Рис. 17 Кривая gs roc
В таблице ниже показан отчет о классификации отдельно для разных моделей:
Модель
тип_пациента
точность
полнота
f1-score
поддержка
Исходный уровень
0 (Здоровый)
0,8
1
0,89
12
1 (PD)
1
0,94
0,97
47
поиск по сетке
0 (Здоровый)
0,73
1
0,85
11
1 (PD)
1
0,92
0,96
48
random_search
0 (Здоровый)
0,73
0,92
0,81
12
4.2.0 Эксперименты и результаты набора данных «B»:
Поскольку первой задачей, выполняемой этим набором данных, была проверка значения «logFC» для генов, и это была задача регрессии, поэтому для понимания значения logFC ggplot было построен, и этот график часто использовался в биоинформатике для проверки поведения генов, и этот график использовался с библиотекой plotnine, а результаты для символов генов с их значением logFC показаны на рисунках 18 и 19.
Рисунок 18: График Gene.symbol и logFC ggplot
Рисунок 19: График Gene.symbol и logFC ggplot geom-Bar
График на рисунке 18 показывает значения logFc, значения меньше 0 соответствуют генам с подавленной регуляцией, а выше — генам с повышенной регуляцией, а следующий график на рисунке 19 показывает поведение генов с барным представлением. Тем не менее, было проверено другое поведение между P. Value и logFC с использованием того же графика, но с добавлением геометрической линии, и результат был таким, как показано на рисунке 20.
Рисунок 20: Значение P. по сравнению со значением logFC с использованием geom_line
Рисунок 21: график вулкана между logFC и P.value
И график на рисунке 21 был построен с использованием библиотеки bioinfokit, и этот график известен как график вулкана, который автоматически сообщает после подачи данных о значительных генах с пониженной и повышающей регуляцией, но его можно изменить с помощью гиперпараметров. После проверки результатов регрессионные модели были обучены с использованием различных алгоритмов, и оценка точности была проверена между всеми теми моделями, по которым оценивались дальнейшие метрики. Тем не менее результаты оценок точности, полученные моделями, были следующими:
Таблица 5. Показатели точности различных моделей
Модель
Значение оценки
RandomForestRegressor
0,7685248
Регрессия хребта
0,8412536
SVR_Linear
0,8439608
SVR_rbf
0,835996
Поскольку эти модели были предоставлены внутри конвейера, для оценки автоматически выбиралась лучшая модель, а метрики оценки были следующими для наиболее подходящей модели SVR_linear:
4.3.0 Результаты сопоставления точек для генов:
Рисунок 22: SNCA VS Pink1
На рисунке 22 черная точка представляет 278 выровненных белков, а синяя область представляет всего 722 невыровненных белка из 1000 белков SNCA и гена pink.
Рисунок 23: паркин против розового 1
На рисунке 23 черная точка представляет 244 выровненных белка, а синяя область представляет всего 756 невыровненных белков из 1000 белков Pink 1 и гена паркина.
Рисунок 24: паркин против SNCA
На рисунке 24 черная точка представляет 228 выровненных белков, а синяя область представляет всего 772 невыровненных белка из 1000 белков SNCA и гена паркина.
4.4 Эксперименты и результаты набор данных 'C' для временных рядов:
Этот набор данных обрабатывался, чтобы увидеть, как пациенты рисовали поведение по отношению ко времени и давлению, которое было замечено с изменением координат. Итак, сначала было замечено поведение между давлением и углом захвата у двух пациентов из контрольной группы и пациентов с болезнью Паркинсона, как показано на рисунках 25-28.
Рисунок 25. Контрольный пациент 1.
Рис. 26. Контрольный пациент 2.
1 (PD)
1
0.91
0.95
47
Рисунок 27. Пациент с болезнью Паркинсона 1.
Рис. 28. Пациент с болезнью Паркинсона 2
Затем было проверено поведение угла захвата и давления для обеих категорий пациентов, что показано на рис. 29:
Рисунок 29: давление в зависимости от угла для 1 pd и 0 является контролем
График давления был дополнительно проверен для пациентов обеих категорий, чтобы узнать, сколько времени применялось давление относительно времени, показанного на рисунках 30 и 31:
Рисунок 30. Давление пациентов с болезнью Паркинсона, выделенное черным цветом
Рисунок 31. Давление контрольных пациентов, выделенное красным цветом. поскольку он показывает постоянные сезонные колебания с течением времени, а результаты показаны на рисунках 32-35 для разных приложенных пациентов:
Рис. 32. Контрольный пациент 1.
Рисунок 33. Контрольный пациент 2.
Рисунок 34. Пациент с болезнью Паркинсона 1.
Рисунок 35. Пациент с болезнью Паркинсона 2
Затем было выполнено моделирование с использованием auto_arima, чтобы получить рекомендуемую модель, поскольку она была выбрана с использованием меньшего значения AIC и лучше для прогнозирования. Прогнозирование, показанное моделями SARIMAX, как показано на рисунках 36-39:
Рисунок 36 Прогноз Саримакс для контрольного пациента 1
Рисунок 37. Модель Sarimax для контрольного пациента 2.
Рисунок 38. Модель Sarimax для пациента с болезнью Паркинсона 1.
Рисунок 39. Модель Sarimax для пациента с болезнью Паркинсона 2
Результаты модели RNN для контрольной группы и пациентов с болезнью Паркинсона для давления и угла захвата в зависимости от времени, как показано на рисунках 40 и 41:
Рис. 40 RNN для контрольного пациента по давлению и углу захвата
Рисунок 41 RNN для пациента с болезнью Паркинсона для давления и угла захвата
4.5 Эксперименты и результаты набора данных «D» для анализа звука:
Рисунок 42 и рисунок 43 представляют собой графики волн реального необработанного звука для случайного анализа выбраны здоровые и больные болезнью Паркинсона.
Рисунок 42 здоровый
Рис. 43. Паркинсон
Точность модели после гипернастройки всех параметров составила 80 %, если не считать метода перекрестной проверки.
Классификационный отчет модели был следующим:
точность
отзыв
f1-score
поддержка
0 (PD)
1
0,62
0,77
8
1 (УВ)
0,7
1
0,82
7
Глава 6 - ПРИЛОЖЕНИЕ:
6.1.0 Реализация библиотек:
импортировать numpy как np
импортировать pandas как pd
импортировать matplotlib.pyplot как plt
импортировать seaborn как sns< br /> из sklearn.metrics импортировать точность_оценку, точность_оценку, f1_score, отзыв_оценку, отчет_классификации, путаницу_матрицу
из statsmodels.tsa.stattools импортировать adfuller
из sklearn.preprocessing импортировать MinMaxScaler
импортировать pymcmcstat
из pmdarima импортировать auto_arima
из statsmodels.tsa.statespace.sarimax импортировать SARIMAX
из statsmodels.tsa.stattools импортировать acovf,acf,pacf,pacf_yw,pacf_ols
импортировать предупреждения
предупреждения .filterwarnings('ignore')
из pandas.plotting import lag_plot
из statsmodels.graphics.tsaplots import plot_acf,plot_pacf
из statsmodels.tsa.arima_model import ARMA,ARIMA,ARIMAResults,ARMAResults< br /> from Bio.Seq import Seq
from Bio import SeqIO
from collections import Counter
from Bio.PDB import PDBParser
import nglview as nv
# Import mean_absolute_error из модуля метрик sklearn
из sklearn.metrics import mean_absolute_error
# Импорт mean_squared_error из модуля метрик sklearn
from sklearn.metrics import mean_squared_error
# Импорт r2_score из модуля показателей sklearn
из sklearn.metrics импортировать r2_score
из sklearn.model_selection импортировать train_test_split
из plotnine.data импортировать мили на галлон
из plotnine импортировать ggplot, aes, geom_point, geom_line, geom_bar
from bioinfokit import analysis, visuz
# Импорт Ridge из модуля linear_model sklearn
from sklearn.linear_model import Ridge
# Импорт SVR из модуля svm sklearn
from sklearn.svm import SVR
# Импорт RandomForestRegressor из модуля ансамбля sklearn
from sklearn.ensemble import RandomForestRegressor
# Импорт SimpleImputer из модуля импутирования sklearn
из sklearn.impute import SimpleImputer
# Import ColumnTransformer из модуля компоновки sklearn
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn import metrics
len(protein_lrrk2),protein_lrrk2
#нахождение последовательности всех аминокислот до стоп-кодона
lrrk2_aa= протеин_lrrk2.split('*')
lrrk2_aa
lrrk2_aa_string = [str(i) for i in lrrk2_aa]
lrrk2_aa_string
#преобразование аминокислот в панды
amino = pd.DataFrame({'amino_acids':lrrk2_aa_string})
amino.head()
amino['count'] = amino['amino_acids'].str.len()
amino.head()
#наибольшая последовательность перед стоп-кодоном
amino.nlargest(10,' count')
# поиск наиболее распространенных белков с частотой, доступной в последовательности
Counter(protein_lrrk2).most_common(10)
%matplotlib inline
%config InlineBackend.figure_format ='retina'
sns.set(style='whitegrid',palette='muted',font_scale=1.2)
ax = sns.distplot(amino['count'].values)
plt.title(f'распределение длины последовательности')
plt.grid(True)
6.4.5 код для точечного сопоставления этих генов:
# функция с решениями для точечной диаграммы
def fillMatrix(M):
#добавить размер окна w
ct = 0
M[0][0] =
для r в диапазоне (1,M .shape[0]):
для c в диапазоне (1,M.shape[1]):
если M[r][0] == M[0][c]:
M[r][c]= '*'
if r == c:
ct += 1
else:
M[r][c]= < br /> incorr = M.shape[0] - ct - 1
print('Количество выровненных оснований: ', ct)
print('Количество невыровненных оснований: ', incorr , '\n ')
#создать и распечатать точечный график
def fill_print():
D = np.zeros([len(sequence1)+1,len(sequence2)+1 ],dtype=str)
для r в диапазоне (0,len(sequence1)):
D[r+1][0] = sequence1[r:r+1]
для c in range(0,len(sequence2)):
D[0][c+1] = sequence2[c:c+1]
fillMatrix(D)
печать (Д)
def fill_plot():
D = np.zeros([len(sequence1)+1,len(sequence2)+1],dtype=str)
для r в диапазоне (0,len(sequence1) ):
D[r+1][0] = sequence1[r:r+1]
для c в диапазоне (0,len(sequence2)):
D[0][ c+1] = sequence2[c:c+1]
fillMatrix(D)
print(D)
# создаем очень простую цветовую палитру
цвета = [[1,.5,.5], [1,0,0], [0,1,0], [0,0,1], [0,0,0], [0, .5, .5]]
cm = matplotlib.colors.ListedColormap(colors)
norm = matplotlib.colors.BoundaryNorm([-3,-2,-1,0,1,2,2 ], cm.N)
fig,ax = plt.subplots(figsize=(10,10),dpi=70)
D_red = np.delete(D,0, axis= 1)
D_red = np.delete(D_red,0,axis=0)
D_red_log = D_red == '*'
ax.imshow(D_red_log,cmap=cm,norm=норма)
seq1 = alpha_syn_dna[:1000]
seq2 = pink_dna[:1000]
sequence1 = str(seq1)
sequence2 = str(seq2)
fill_print()
sequence1 = str(seq1)
sequence2 = str(seq2)
fill_plot()
seq1 = parkin_dna[:1000]
seq2 = pink_dna[:1000]
последовательность1 = строка (последовательность1)
последовательность2 = строка (последовательность2)
fill_print()
fill_plot()
seq1 = parkin_dna[:1000]
seq2 = alpha_syn_dna[:1000]
последовательность1 = строка (последовательность1)
последовательность2 = строка (последовательность2)
fill_print()
###final layer
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',metrics=[ 'accuracy'],optimizer='adam')
## Trianing my model
from tensorflow.keras.callbacks import ModelCheckpoint
from datetime import datetime
num_epochs = 200
num_batch_size = 128
checkpointer = ModelCheckpoint(filepath='saved_models\\audio_classification.hdf5',
verbose=1, save_best_only=True)
start = datetime.now()
model.fit(x_train, y_train, batch_size=num_batch_size, epochs=num_epochs, validation_data=(x_test, y_test), callbacks=[checkpointer], verbose=1)
duration = datetime.now() - start
print(Обучение завершено за время: , продолжительность)
test_accuracy=model.evaluate(x_test,y_test,verbose=0)
print(test_accuracy[1 ])
из sklearn.metrics импортировать путаницу_матрицу, классификационный_отчет
print(classification_report(y_test,прогноз))
filename='C:\\Users\\kunjk\\OneDrive\\Desktop\\ запись голоса\\голос\\аудио\\процесс1\\ID06_pd_3_1_1.wav'
аудио, sample_rate = librosa.load(filename, res_type='kaiser_fast')
mfccs_features = librosa.feature.mfcc(y =аудио, sr=sample_rate, n_mfcc=40)
mfccs_scaled_features = np.mean(mfccs_features.T, axis=0)
print(mfccs_scaled_features)
mfccs_scaled_features=mfccs_scaled_features.reshape(1,-1)
print(mfccs_scaled_features)
print(mfccs_scaled_features.shape)
predicted_label=model.predict_classes(mfccs_scaled_features)< br /> print(прогнозируемая_метка)
класс_прогноза = кодировщик.обратное_преобразование(метка_прогноза)
класс_прогноза
Школа компьютерных наук Университета Хартфордшира
Магистр искусственного интеллекта с робототехникой
Содержание
Введение8
1.1.0 Постановка задачи 8
1.2.0 Цель8
1.3.0 Задачи8
1.4.0 Вопросы исследования9
2. Литература Обзор.9
2.1.0 Биологическая основа10
2.1.1 Теории, лежащие в основе генов в случае болезни Паркинсона или гибели клеток10
2.1.2 Пути11
2.1.3 Дофаминергические пути13
2.2 Методы расчета для моделирования заболеваний.14
2.2.0 Важность разработки признаков14
2.2.1 Разработка признаков и моделирование14
2.2.2 Корреляция15
2.2.3 PCA15
2.2.4 Моделирование, используемое для задачи классификации15
2.2.5 Метрики оценки для задачи классификации16
2.2.6 Моделирование, используемое для задачи регрессии18
2.2.7 Оценка для задачи регрессии20
2.2.8 Моделирование временных рядов21
2.2.9 Анализ записи голоса.23
3. Методология.31
3.1.0 Используемые инструменты и библиотеки31
3.1.1 Библиотеки машинного обучения31< br /> 3.1.2 Обычные библиотеки Python31
3.2.0 Сбор данных31
3.2.1 Детали и важность набора данных 'A'.31
3.2.2 Детали и важность набора данных 'B' .34
3.2.3 Детали и важность набора данных 'C'35
3.2.4 Детали и важность набора данных 'D'35
3.3.0 Чтение данных 36
> 3.3.1 Разработка признаков в наборе данных 'A'36
3.3.2 Моделирование, используемое для набора данных 'A37
3.4.1 Разработка признаков в наборе данных 'B'.39
3.4.2 Моделирование используется для набора данных 'B'.40
3.5.1 Сопоставитель точек для генов SNCA, Parkin, Pink1 и Lrrk-240
3.6.1 Разработка признаков и моделирование набора данных 'C'40
3.6 .2 Разработка признаков и моделирование набора данных 'D'42
4. Эксперименты и результаты.43
4.1.0 Эксперименты и результаты набора данных 'A'44
4.2.0 Эксперименты и результаты набор данных 'B'50
4.3.0 Результаты Dot Matcher для генов55
4.4 Эксперименты и результаты набора данных 'C' для временного ряда 58
4.5 Эксперименты и результаты набора данных 'D' для аудиоанализ.70
5. Заключение и этика.72
5.1.0 Вывод из набора данных «A»72
5.2.0 Вывод из набора данных «B» для регрессии72
5.3 .0 Вывод из набора данных "C" для анализа временных рядов72
5.4.0 Вывод из набора данных "D" для анализа записи голоса73
5.5.0 Этика.73
5.6.0 Дальнейшая работа.74
6. Приложение.76
6.1.0 Реализация библиотек76
6.2.0 код для задачи классификации набора данных 'A'77
6.3.0 код для задачи регрессии набора данных ' Б'83
6. 4.0 код для генов».83
6.5.0 код для анализа голоса.99 6.6.0 код для временного ряда104
ГЛАВА 1 – ВВЕДЕНИЕ
Постановка проблемы:
Болезнь Паркинсона (БП) считается вторым по значимости нейродегенеративным заболеванием, и для нее не существует лекарства. Не было таких классических клинических методов для выявления болезни Паркинсона или любого другого нейродегенеративного расстройства, потому что сложность мозга и пациента рассматривалась как БП после оценки только симптомов, что могло привести к ложным результатам. Более того, понимание ПД без какого-либо моделирования невозможно. Основной проблемой является определение путей и генных мутаций, связанных с болезнью Паркинсона, и выбор моделей является основной задачей. Любое нейродегенеративное заболевание имеет несколько уровней идентификации болезни:
Сигналы передаются друг другу через нейроны, и это первый уровень, на котором нужно проверить поведение нейронов.
Как происходит гибель нейронов?
Какие гены ответственны за заболевание и какова природа этого гена?
Какова роль генов в гибели нейронов или клеток?
Несбалансированные наборы данных, особенно в случае анализа временных рядов с длина дисперсии у каждого пациента
Вычислительные ресурсы, поскольку обучение RNN слишком медленное и иногда не гибкое при работе в качестве практики
Как любая мутация в генах может привести к расстройству или повлиять на пути?
Есть есть еще несколько проблем, но это основные проблемы, лежащие в основе любого нейродегенеративного расстройства.
1.2.0 Цель:
Цель этого проекта — изучить, как ИИ может помочь в клинических испытаниях выявить симптомы болезни Паркинсона для получения наиболее точных результатов и помогает понять поведение генов несколькими способами. Получение истинных результатов при болезни Паркинсона для клинических испытаний играет важную роль в обеспечении безопасности пациента. Более того, с появлением ИИ стало возможным найти лекарство от болезни.
1.3.0 Цели. Основными задачами этого проекта являются:
Определить несколько клинических методов, позволяющих узнать, что человек страдаете болезнью Паркинсона или нет.
Определение методов определения поведения генов.
Определение природы гена с использованием временных рядов.
Какие гены в наибольшей степени ответственны за заболевание?
1.4.0 Вопросы исследования:
Как задача классификации решает проблему обнаружения болезни Паркинсона?
Как задачи регрессии могут помочь в понимании поведения генов?
Как временные ряды помогают в идентификации болезнь Паркинсона для рисования с течением времени?
Как анализ записи голоса помогает выявить болезнь Паркинсона или контрольных пациентов?
Глава 2. Обзор литературы
2.1.0 Биологическая основа
Болезнь Паркинсона (БП) — вторая самое нейродегенеративное расстройство после болезни Альцгеймера. БП определяется как прогрессирующая дегенерация дофаминергических нейронов, которые присутствуют в основном в черной субстанции, что может привести к изменению двигательных движений. Нейродегенерация этого заболевания может быть вызвана различными факторами, включая старение, факторы окружающей среды и генетические факторы, и может вызвать гибель дофаминовых нейронов из-за дефицита дофамина (DA) в головном мозге. (Бакши и др., 2019). Это заболевание до сих пор неизлечимо, доступны только некоторые лекарства или хирургическое вмешательство, и мотивом этого является выработка большего количества DA (дофамина). Тем не менее, начинается эпоха ИИ (искусственного интеллекта), что может привести к лучшему пониманию ПД. Цель этого проекта — понять математические и вычислительные модели, которые фиксируют генетику и пути развития болезни Паркинсона, а также то, как искусственный интеллект может дать больше информации о ее причинах, предсказать ее развитие или выздоровление при различных взаимодействиях лекарств и условиях окружающей среды.
Как правило, это расстройство затрагивает от 1% до 2% населения старше 65 лет, и проблема с этим расстройством заключается в том, что требуется меньше тестов, чтобы узнать это с уверенностью в том, что человек страдает БП или нет. Начальные исследования зависят исключительно от признаков и симптомов, по которым врачи делают вывод о болезни Паркинсона. Основные симптомы можно объяснить термином TRAP, который означает:
T – тремор (обычно тремор покоя)
R – ригидность (ригидность зубчатого колеса для верхних конечностей и ригидность свинцовой трубы для нижних конечностей). )
A – акинезия (отсутствие движений) или брадикинезия (меньше движений)
P – постуральная нестабильность (нарушение равновесия и утрата установочных рефлексов)
Чтобы лучше понять болезнь Паркинсона, в первую очередь нужно понять патология и физиология, стоящие за этим, поскольку мозг слишком сложен. Патология этого заболевания характеризуется потерей дофаминергических нейронов в стволе головного мозга (главным образом черной субстанции), что может вызвать снижение количества дофаминовых нейронов в стриатуме (имеются основные дофаминовые нейроны). 4 основных гена, ответственных за болезнь Паркинсона: LRRK2, Park2, Pink 1 и DJ-1. Согласно (Alliance & Services., 2009), «важно понимать основные законы наследования, чтобы понять, как условия передаются в семье. Но прежде чем понять наследование генов, что такое гены? Ген — это основная физическая и функциональная единица наследственности, состоящая из ДНК. Некоторые гены отвечают за фенотип, который представляет собой физическую характеристику, такую как внешний вид, поведение или развитие организма, а некоторые дают инструкции для создания молекул, называемых белками. Однако многие гены не кодируют белки. Гены несут коды «ACGT», а ДНК — это химическое вещество, которое появляется в виде цепей и состоит из 2 длинных парных цепей, свернутых в виде двойной спирали. Основные законы наследования для понимания природы гена заключаются в следующем:
Аутосомно-доминантный: В этом паттерне достаточно только одной копии гена, что означает, что для дальнейшего наследования фенотипа достаточно только одного родителя.< br /> Аутосомно-рецессивный: Для дальнейшего наследования фенотипа оба родителя должны нести ответственный ген.
Х-сцепленный доминантный: в этом наследовании в основном страдают женщины.
Х-сцепленный рецессивный: самцы в основном поражены.
Митохондриальный: только в этом случае женщины могут передавать дальше, и могут быть затронуты как мужчины, так и женщины.
2.1.1 Теории, лежащие в основе генов в случае болезни Паркинсона или дофаминергической гибели клеток:
LRRK2 (расположен на хромосоме 12p11.2-q13.1 и кодирует большой белок, называемый дардарином) (Li et al., 2014)
Мутация в Lrrk-2 может привести к нарушению лизосомного пути эндосом путем который увеличивает уровни SNCA или альфа-синуклеина и создает тельца Леви, которые в основном обнаруживаются в случае болезни Паркинсона.
Мутация изменяет некоторый механизм, который нарушает RAS и MAP-K, с помощью которых везикулярное движение и дофаминергия уменьшаются.
/> Park-2 (ген расположен на участке 6q25. 2-27 и кодирует белок паркин) (Ming et.al, 2020)
Мутация этого гена может привести к дефекту Е3-убикитинлигазы, что также приводит к образованию большего количества альфа-синуклеина и создает тельца Леви и отвечает за гибель клеток.
DJ-1 и Pink-1:
Эти гены контролируют антиоксидантные белки, и мутация в этом гене может привести к образованию АФК (реактивный кислород). видов), которые вызывают гибель митохондриальной дисфункции и дофаминергическую гибель клеток.
Поскольку все эти теории пересекаются друг с другом, понимание образования телец Леви или гибели клеток все еще остается под вопросом из-за сложности. Согласно последним исследованиям, большинство 20 генов, связанных с болезнью Паркинсона, показаны на рисунке 1.
Рис. 3 Пути развития болезни Паркинсона (Sasidharakurup et al., 2017)
2.2 Вычислительные методы для моделирования заболеваний
2.2.0 Важность разработки признаков:
Разработка признаков играет жизненно важную роль в получении наилучших прогностических результатов. . Но первая задача — понять, какую разработку функций применить. Разработка функций используется для преобразования необработанных данных в функции, которые показывают важность данных для задачи, и это может повысить точность модели. Затем еще одна важная задача состоит в том, как оценить модель. Оценку модели можно выполнить после того, как будет известна выходная переменная, поскольку для разных задач используются разные методы. Например, среднеквадратическая ошибка (RMSE) применима для задач регрессии, а площадь под кривой (AUC) применима для классификации с задачами двух классов. Тем не менее разработка функций полностью зависит от независимых переменных или функций для задачи.
2.2.1 Разработка функций и моделирование:
Разработка функций сама по себе является искусством, поскольку требует наилучшего подхода к моделированию, поскольку переменные данных каждый раз разные. Этот проект имел дело с классификацией, регрессией, данными временных рядов и текстовыми данными. Разработка признаков требует каждый раз разного подхода в соответствии с требуемой задачей. Если мы посмотрим на модели, некоторые проекты машинного обучения преуспеют, а некоторые потерпят неудачу с точки зрения точности или плохих прогнозов модели из-за разных подходов к используемому извлечению признаков. Строки рассматриваются как наблюдения или экземпляры, а столбцы описываются как атрибуты или функции. Но вопрос в том, как узнать, какой признак должен быть в данных. Есть несколько способов, два наиболее важных способа узнать:
2.2.2 Корреляция: Корреляция говорит о степени, в которой две переменные связаны друг с другом. Тем не менее, этот метод хорош, если данные содержат не так много переменных или признаков, потому что для больших признаков очень сложно визуализировать корреляцию. В этом проекте для корреляции использовалась библиотека seaborn и python panda для визуализации корреляции. Если данные линейно коррелированы, это означает, что в качестве примера линейной регрессии можно использовать более простые модели. Значение корреляции Пирсона обычно находится в диапазоне от -1 до 1. Значения ближе к 1 сильно коррелированы, а значения ближе к 0 коррелируют с меньшей вероятностью, а -1 означает отрицательную корреляцию. С помощью корреляционного анализа избыточные функции, которые сильно положительно или отрицательно коррелируют с другими функциями, могут быть удалены для улучшения модели.
2.2.3 PCA: PCA или анализ основных компонентов — это еще одна методология, которую можно использовать для уменьшения многомерности (что подразумевает большое количество функций). Высокая размерность вызывает проблему переобучения в модели, поскольку это означает, что модель учится слишком многому, что не очень хорошо для моделирования. PCA - это алгоритм обучения без учителя и направления компонентов PCA, которые вычисляются с использованием объяснительных функций. PCA определяет величину и направление максимальной дисперсии в наборе данных. Этот компонент содержит самую высокую изменчивость всех компонентов и большую часть информации, собранной ПК1. PC2 вычисляет оставшуюся дисперсию в наборе данных и не коррелирует с PC1 (Goonewardene, 2019). Другой PCA следует тому же правилу PCA, которое фиксирует оставшуюся дисперсию и не коррелирует с предыдущими компонентами PCA. Поскольку этот проект не использовал PCA, математические объяснения не включены. Это просто для того, чтобы показать различные методы, которые можно использовать, поскольку есть и другие методологии, но они не используются в проекте, поэтому рассказываем об основных методах моделирования.
2.2.4 Моделирование, используемое для задачи классификации:
Для задач классификации использовались такие оценщики, как классификатор Random Forest, Random Search CV и Grid Search CV. Но вопрос в том, зачем использовать разные оценки, а не одну? Это самая важная задача, какую оценщик использовать, поскольку для одной и той же задачи можно использовать очень много оценщиков. Для этого проекта я следовал официальной шпаргалке, предоставленной scikit-learn. Проект был выполнен с использованием этой шпаргалки в соответствии с инструкциями на рисунке 4.
Рисунок 6 Кривые AUC_ROC (Нархаде, 2018)
Приведенные выше графики на рисунке 6 говорят о том, как выглядит график ROC. На втором графике красная кривая распределения относится к положительным классам, а желтая — к отрицательным классам. Второй и третий графики — идеальные ситуации, в которых они не перекрываются и могут быть легко различимы между положительными и отрицательными классами. Если значение AUC близко к 1, это означает, что модель предсказывает лучше, если оно приблизительно равно 0,5, это означает, что модель не имеет способности различать положительные и отрицательные классы, а если AUC приблизительно равно 0, то модель взаимодействует с классами и считается наихудшей моделью. (Narkhade, 2018).
2.2.6 Моделирование, используемое для задачи регрессии:
Ридж-регрессия: это вариант линейной регрессии. Модель гребневой регрессии использовалась из-за ее способности решать проблему переобучения в наборе данных. Согласно записи выступления Оуэна Чжана в NYC Data Science Academy, «если вы используете регрессию без регуляризации, вы должны быть особенными». Простая регрессия показывает взаимосвязь между независимыми переменными и выходной переменной. Ридж-регрессия выполняет регуляризацию L2 и используется для наложения штрафа на функцию затрат или потерь. Гребневая регрессия оптимизирует следующее:
Цель = RSS + α*(сумма квадратов коэффициентов)
Здесь RSS — это «остаточная сумма квадратов», которая представляет собой просто сумму квадратов ошибок между прогнозируемым и фактическим значения в тренировочном наборе, а альфа (α) — это скорость обучения, которая уравновешивает количество внимания, уделяемое минимизации RSS, по сравнению с минимизацией суммы квадратных коэффициентов. Как правило, альфа-значения задаются следующим образом:
Альфа = 0 (цель становится простой линейной регрессией, а коэффициенты становятся такими же, как и простая линейная регрессия)
Альфа = ∞ (коэффициенты становятся 0)
0 ‹ Альфа ‹ ∞ (величина альфа будет определять вес, придаваемый различным частям задачи)
Машины опорных векторов: это набор контролируемых методов обучения, в которых используются различные функции ядра, указанные для принятия решения функцию, но также можно указать и пользовательские ядра. Ядра, использованные в проекте, были линейными и RBF, реализованными в scikit-learn. Цель SVM — найти гиперплоскость в n-мерном пространстве, которая четко классифицирует точки данных. Точки данных, которые находятся ближе всего к обеим сторонам гиперпараметров, называются опорными векторами.
Гиперпараметры в SVR:
Регрессия опорных векторов (SVR), которая представляет собой просто машину опорных векторов, выполняющую регрессию для непрерывных выходных значений, требует следующих ключевых параметров:
Гиперплоскости: границы решений, которые используется для прогнозирования непрерывного выхода. Они используются, чтобы узнать о опорных векторах и построить необходимую линию, которая показывает прогнозируемый результат модели.
Ядро: это просто математическая функция, которая обязательна для придания алгоритму поведения, как в этом проекте. линейный и RBF были использованы.
Граничные линии: эти линии рисуются вокруг гиперплоскости, чтобы создать границу между точками данных.
Рис. 7. Модели SVC с разными ядрами (Buitinck, 2013 г.)
На рис. 7 показано поведение различных ядер на официальной странице scikit-learn. В отличие от других моделей, SVR пытается свести к минимуму ошибку между фактическими и прогнозируемыми значениями, а SVR пытается подобрать наилучшую линию в пределах порогового значения, которое представляет собой расстояние между гиперплоскостью и граничной линией. Линейный SVR имеет более быструю реализацию по сравнению с SVR для больших наборов данных, но учитывает только линейное ядро. Ядро RBF известно как гауссова радиальная базисная функция, и в scikit узнайте, что это ядро по умолчанию и обычно выбирается для нелинейных данных, поскольку оно помогает лучше разделить, когда нет предварительных знаний о данных. Формулы для линейных ядер и ядер RBF:
Формула линейного ядра: F (x, xj) = (x.xj +1)^d ‘.’ — скалярное произведение, а d обозначает степень. F (x, xj), представляющая границу решения для разделения заданных классов.
Формула RBF: F (x, xj) = exp(-gamma*||x-xj||^2) значение gamma равно между 0 и 1. Наиболее предпочтительным значением является 0,1.
Регрессор случайного леса: работа этой модели такая же, как описано выше в классификаторе случайного леса, с той лишь разницей, что она работает с задачей регрессии. Коды всех этих моделей добавлены в приложение.
2.2.7 Оценка для задачи регрессии:
MAE (средняя абсолютная ошибка): MAE проще всего понять, поскольку это средняя ошибка.
MSE (среднеквадратичная ошибка): MSE более популярен, чем MAE, потому что MSE наказывает за большие ошибки, что, как правило, полезно в реальном мире.
RMSE (среднеквадратичная ошибка): RMSE даже более популярен, чем MSE, потому что RMSE интерпретируется в единицах y.
Оценка R^2: R^2 — это коэффициент детерминации, а лучшее значение модели равно 1, а -1 означает наихудшую модель. Если значение равно 0, это означает, что модель игнорирует входные признаки.
2.2.8 Моделирование временных рядов:
Арима: эта модель означает авторегрессионное интегрированное скользящее среднее, и это просто форма регрессии. анализ. Это используется для прогнозирования выходной переменной с использованием линейной комбинации прошлых значений для независимой переменной. Модель ARIMA может быть описана в следующих деталях:
AR (авторегрессия): это описывает, как она использует взаимосвязь между текущим наблюдением и количеством заданных задержек, которые являются просто прошлыми значениями.
I ( Интегрированный): используется для разграничения необработанных наблюдений, и основная функция состоит в том, чтобы сделать временной ряд стационарным.
MA (скользящее среднее): здесь используется зависимость между наблюдением и остаточной ошибкой из модели скользящего среднего, которая применяется к наблюдениям с отставанием.
Параметры, используемые моделями ARIMA, определяются следующим образом: br /> p: количество запаздывающих наблюдений
d: степень различия
q: порядок скользящего среднего
SARIMAX: это просто обновленная версия модели ARIMA, основное отличие состоит в том, что модель ARIMA включает ARMA, в то время как SARIMAX включает в модель сезонные эффекты и экзогенные факторы с ARMA. Как и в модели ARIMA, нам нужно сначала предоставить 2 вида заказов, которые аналогичны модели ARIMA (p, d, q), а другой - указать влияние сезонности и вызвать сезонные заказы, которые должны предоставить три или 4 числа, которые были выполнены. используя auto_arima. Гиперпараметрами для этой модели являются сезонный AR, сезонный порядок интеграции, сезонная скользящая средняя, работающая там же, что и ARIMA, и последний параметр — сезонная периодичность для сезонности. Математика модели SARIMAX представлена на рисунках 8A и 8B.
Рисунок 9 Архитектура RNN, LSTM и GRU
Чтобы повысить оценку производительности моделей глубокого обучения, у нас есть еще несколько вещей, которые нужно сделать, например, использовать функцию оптимизатора
, поскольку мы использовали RMSprop, который оптимизирует алгоритм с использованием определенных аргументов, таких как скорость обучения, которая говорит о скорости обучения алгоритма, rho означает коэффициент дисконтирования для предстоящего градиентного спуска и т. д., но мы использовали только скорость обучения, поскольку другие функции не являются частью этого проекта. .
Передаточная функция или функции активации используются для определения выходных данных нейронной сети. Использовались линейная и сигмовидная активации:
Линейная активация: математическое выражение настолько простое, что f(x) = x, а функция описывается как линейная или линейная. Поэтому выходные данные не будут ограничены каким-либо диапазоном, и, как правило, это не очень помогает нейронным сетям, когда используются различные параметры, а данные слишком сложны.
Нелинейная активация: это наиболее часто используемая активация. функции. Они позволяют модели легко обобщать или адаптировать разнообразие данных и их сложность. Следовательно, в этом проекте сигмоидальная активация использовалась в нелинейном виде, который описывает использование S-образной формы, а значения существуют от 0 до 1. Математическое выражение сигмоиды записывается как f (z) = 1 / 1 + e^-z. < br /> 2.2.9 Анализ записи голоса:
Та же работа для этой части была выполнена (N, et al., 2021), однако исходный код этой работы не опубликован и воспроизводится для магистерской диссертации и только завершил часть ANN для этой диссертации. Фонаторные симптомы обычно являются первыми признаками любого неврологического расстройства. Таким образом, анализ голоса может сыграть жизненно важную роль в постановке диагноза, а также для развития болезни и пациента, который может выбрать наилучшую логопедическую терапию в соответствии с диагнозом. Многие исследователи работали над различными наборами голосовых данных, чтобы повысить точность обнаружения, применяя несколько алгоритмов машинного обучения или глубокого обучения для классификации развивающихся симптомов телемониторинга. Возникает еще один вопрос, что БП происходит гораздо чаще у мужчин по сравнению с женщинами, и особенности голоса также различаются в обоих случаях, но это может повысить точность с учетом пола или без него. Распространенными моделями глубокого обучения, используемыми при обнаружении голоса PD, являются ANN, CNN и несколько моделей классификации ML. Тем не менее, в этом проекте использовалась только ANN.
Искусственные нейронные сети:
Голосовые данные обычно состоят из трех этапов: извлечение признаков, сокращение признаков и классификация. Традиционно для работы с вокальными данными использовались такие параметры, как джиттер, высота тона, simmer, амплитуда и другие. Для создания вектора признаков в этом проекте использовались Mel-Frequency-Cepstral-Coefficients (MFCCs).
MFCC: MFCC суммирует частотное распределение по размеру окна, что позволяет анализировать как частотные, так и временные характеристики звука. Эти звуковые представления позволят нам идентифицировать функции и классифицировать.
Искусственные нейронные сети: эти сети вдохновлены биологическими нейронными сетями; они известны как подмножество машинного обучения и сердцевина глубокого обучения. Архитектура ИНС очень проста и состоит из трех узловых слоев, входного слоя, одного или нескольких скрытых слоев и выходного слоя. Каждый узел связан со своими весами и порогом, и если узел активирован, это означает, что данные могут быть обработаны для следующего нейрона. Нейронные сети со временем учатся и улучшают свою точность. После предоставления входных слоев веса будут назначены автоматически, что помогает определить важность данных переменных. Для оптимизации нейронных сетей у нас есть оптимизаторы для нейронных сетей для этой части. Был использован оптимизатор Адама, который считается одним из лучших оптимизаторов среди всех оптимизаторов, и была использована активация relu, известная как выпрямленная линейная единица, relu конвертирует от всех отрицательных до всех положительных, а также использовалась сигмоида, которая переводила все значения меньше 0,5 в 0 и больше 0,5 в 1. Оценка классификации обсуждалась ранее в разделе 2.2.5. Архитектура ИНС показана на рисунке 10:
Документ
Предыстория
Используемая методология
Резюме
Математические биологические модели болезни Паркинсона (Bakshi et al. 2019)
В этом документе объясняются пути БП и пути, связанные с генами, с использованием подход дифференциального математического моделирования.
Было использовано механическое моделирование, которое далее классифицируется по категориям, а именно: модели агрегации Asyn, модели патогенеза и модели распространения патологии. Согласно этой статье, модели агрегации Asyn являются наиболее экономичными и имеют наибольшую экспериментальную поддержку. Вот почему мой проект был основан на модели агрегации Asyn
В патогенезе БП было выявлено несколько петель обратной связи. Эти модели патогенеза БП были разработаны с использованием экспериментальной литературы, и эти междисциплинарные подходы оказались полезными для проверки гипотез. Кроме того, в будущем ведутся работы по внедрению нейронных сетей.
Компьютерное моделирование апоптоза при болезни Паркинсона с использованием теории биохимических систем. (Sasidharakurup et al., 2017)
В этой статье представлена компьютерная модель болезни Паркинсона, которая включает несколько взаимодействий, которые могут привести к гибели нейронов.
Хотя я не применял методы, представленные в этой статье, они использовались в качестве хорошего обзора литературы по временным рядам, математическим и вычислительным ресурсам. Однако моделирование, используемое в этой статье, было выполнено с использованием инструмента Cell Designer и математики с использованием теории биохимических систем (BST). Использовались следующие модели: кинетика общего массового действия (GMA) и необратимая кинетика Михаэлиса-Ментен.
Модель, разработанная в этой статье, позволила лучше понять поведение основных путей апоптоза и биологических взаимодействий при болезни Паркинсона.
Узнать больше Инжиниринг функций, Как проектировать функции и как в этом преуспеть (Браунли, 2014 г.)
В этом документе объясняется разработка функций в машинном обучении. В нем объясняется важность и шаги, необходимые для разработки признаков
Разработка признаков может выполняться различными способами в зависимости от данных. Основными обязательными шагами в ML являются важность функций, извлечение функций, выбор функций, построение функций, изучение функций. как необработанные данные должны быть преобразованы в полезную информацию.
PCA: применение в машинном обучении
В этом документе обсуждалась важность, рабочий процесс и ограничения PCA.
Применяется рабочий процесс PCA следующим образом: нормализуйте данные, создайте ковариационную матрицу для собственного разложения, выберите оптимальное количество PCA.
Полное руководство по алгоритму случайного леса (Donges, 2021)
Этот документ был основан на тематическом исследовании, которое показывает работу, аналогию, важность признаков и гиперпараметры случайного леса.
Были упомянуты различные гиперпараметры, такие как n_estimators, n_jobs, max_features, min_sample_leaf, random_state
Случайные леса трудно превзойти по производительности. Однако при разных подходах в Random Forest это может повысить оценку модели. Тем не менее, есть и другие варианты для повышения производительности, такие как нейронная сеть. В целом, Random Forest — это быстрый, легкий, простой и гибкий инструмент, но не без некоторых ограничений.
Понимание AUC — кривая ROC (Narkhede, 2018)
Производительность любой модели играет жизненно важную роль и существенный. Что касается проблем классификации, у нас есть несколько методов проверки оценки. Тем не менее, кривая AUC-ROC — еще один лучший подход для проверки или визуализации производительности.
Напомним, специфичность, FPR и взаимосвязь между ними.
Согласно (Narkhede, 2018) В мультиклассовой модели , мы можем построить N кривых AUC ROC для N числовых классов, используя методологию One vs ALL.
Раскрывая истинную силу регрессии опорных векторов (Raj, 2020)
В этой статье обсуждается интуитивное понимание алгоритма SVR
Методология была применена к данным о жилье в Калифорнии, в которых моделирование Ядро радиальной базисной функции (RBF) использовалось в качестве примера для объяснения использования ядер. Однако для используемого моделирования доступны различные ключевые гиперпараметры: гиперплоскость, ядро и граничные линии. br /> Узнайте о временных рядах ACF и PACF в SPSS с данными из базы данных фуражного зерна Министерства сельского хозяйства США (Sage, 2017 г.)
В этом документе обсуждалось построение функции автокорреляции и частичной автокорреляции) для одной переменной временного ряда.
/> Acf, pacf
С помощью графиков acf и pacf динамика временного ряда может быть охарактеризована с помощью авторегрессионного процесса или скользящего среднего, и это может показать признаки нестационарности.
Полное руководство по SARIMAX в Python для моделирования временных рядов
Когда индекс представляет собой время, он рассматривается как данные временного ряда и для прогнозирования у нас есть так много доступных моделей, таких как ARIMA, SARIMAX, ARMA и т. д.
pre -этапы обработки представляли собой сезонную декомпозицию с добавкой модели, добавление объявлений для определения стационарности, прокрутку данных, а затем моделирование ARIMA и SARIMAX
Согласно (Bhardwaj, 2021) В этой статье показано, как SARIMAX становится полезным, когда сезонность и экзогенные факторы доступны во временном ряду. В текущем сценарии на тенденцию временного ряда влияет множество факторов, и в этой ситуации трудно точно предсказать.
Ваше руководство по скрытому распределению Дирихле
В этой статье обсуждается, как работает LDA и как LDA помогает в выборе темы с использованием НЛП и классификации текста
Распределение Дирихле, алгоритм выборки Гиббса, вероятностные модели в НЛП
Согласно (Леттиер, 2018) LDA можно использовать для классификации документов (композитов) и слов /n-граммы (части) в темы.
Глава 3 – Методология
Для понимания методологии этого проекта разделены на следующие категории.
Машинное обучение для прогнозирования пациентов с БП.
Машинное обучение для задачи регрессии при нахождении значения logFC гены.
Анализ временных рядов между контрольной группой и пациентами с болезнью Паркинсона.
НЛП для идентификации генов с использованием аминокислот.
Вероятностное моделирование генов.
3.1.0 Инструменты и используемые библиотеки: Весь проект сделан на питоне с использованием google colab и Jupyter Lab. В проектах используются следующие библиотеки:
3.1.1 Библиотеки машинного обучения:
NumPy (для работы с массивами), Pandas (для структур данных и анализа данных), {Seaborn Matplotlib, nglview, bioinfokit , сюжетная линия (для визуализации)}, Biopython (для биоинформатики), Scikit-Learn (для предварительной обработки и визуализации), , statsmodels и pmdarima (для временных рядов), librosa (для голосового анализа)
3.1.2 Python Обычные библиотеки:
re (операции с регулярными выражениями), коллекции (для типов данных)
3.2.0 Сбор данных:
Сбор данных является основной задачей в этом проекте, так как это касается личной информации о пациенты. Тем не менее, 2 набора данных загружаются непосредственно из Kaggle, а еще один набор данных был создан с использованием предметной области машинного обучения и биоинформатики.
3.2.1 Детали и важность набора данных «A»:
До создания искусственного интеллекта существовали не было таких клинических или лабораторных тестов для проверки БП, и врачи проверяли неврологический анамнез и наблюдали за двигательным поведением для проверки БП. Из-за отсутствия лабораторных исследований или диагностики БП было намного сложнее, так как на ранних стадиях двигательные движения не выражены. Из-за этого случаи болезни Паркинсона становятся тяжелыми, поскольку они не получают надлежащего лечения вовремя. Но с появлением искусственного интеллекта лабораторные тесты стали настолько простыми, что их результаты заслуживают доверия. Таким образом, набор данных «А» ориентирован исключительно на один из этих наборов данных, который содержит информацию о пациентах с БП для извлечения голосовых характеристик, которые так ценны при скрининге пациентов с БП.
Атрибуты набора данных https://www.kaggle.com/debasisdotcom/parkinson-disease-detection следующие:
Записи столбца матрицы (атрибуты):
name — имя субъекта ASCII и номер записи
MDVP: Fo (Гц) — средняя основная частота вокала
MDVP: Fhi (Гц) — максимальная основная частота вокала
MDVP: Flo (Гц) — минимальная основная частота вокала
MDVP: джиттер(%), MDVP : джиттер(Abs), MDVP: RAP, MDVP : PPQ, джиттер : DDP — несколько
показателей изменения основной частоты
MDVP:Shimmer,MDVP:Shimmer (дБ), Shimmer: APQ3, Shimmer: APQ5, MDVP: APQ, Shimmer: DDA — несколько показателей вариации амплитуды
NHR, HNR — два показателя отношения шума к тональным компонентам в голосе
status - Состояние здоровья субъекта (один) - болезнь Паркинсона, (ноль) - здоров
RPDE,D2 - Две меры нелинейной динамической сложности
3.2.2 Подробности и важность набора данных «B»:
Следующий набор данных основан на генах, поскольку БП все еще находится в стадии исследования, и пока нет такого лекарства для лечения этого заболевания. Этот набор данных играет жизненно важную роль в понимании генов. Этот набор данных входит в топ-250 генов, которые были загружены с «https://www.kaggle.com/kerneler/starter-top-250-parkinson-s-genes-5a3fff83-7» и ранжированы по значению P (от 0,0000394 до 0,009482). ), которые были отсортированы на основе четности log fold-change (logFC) для контроля. Значения logFC также показывают, насколько значительно каждый ген экспрессировался по-разному. Из 250 лучших генов ровно 150 активировались, а 100 подавлялись. Значения logFC генов с повышенной регуляцией варьировались от 0,202 до 1,149, а значения logFC с пониженной регуляцией варьировались от -0,188 до -1,262.
Изменение кратности: значение logFC выражается как кратное изменение, в котором положительные значения известны как повышенные, а отрицательные значения являются подавленными генами. Это рассматривается как logFC, потому что исходные значения FC не сильно масштабированы, поэтому они преобразуются в logFC с использованием логарифмической шкалы 2.
P-значение: используется для анализа того, может ли ген проявляться иначе, и относится к гена по отдельности.
Скорректированное значение P: это значения, пересчитанные для каждого гена для проведения дополнительных статистических тестов, а значения менее 0,05 считаются значительно дифференциально выраженными генами.
T — это t-статистика, которая — это просто отношение значения logFC к его стандартной ошибке.
B — это B-статистика, означающая логарифмическую вероятность дифференциальной экспрессии гена. Для дальнейшего объяснения B-статистики возьмем один пример, в котором B = 1,5, поэтому коэффициент дифференциальной экспрессии равен exp (1,5) = 4,48, а вероятность того, что ген экспрессируется по-разному, составляет 4,48/(1+4,48) = 0,82. , то есть вероятность того, что ген дифференциально экспрессируется, составляет около 82%.
Структура набора данных показана в таблице 3. .Val
P.Value
T
B
logFC
Gene.symbol
Gene.title
217094_s_at
0.689
3,94E-05
4,37608
0,213
0,649475
ITCH
зудящая убиквитин-протеинлигаза E3
208666_s_at
0,689
7,74 E-05
-4,18835
-0,173
-0,46923
ST13
подавление онкогенности 13 (карцинома толстой кишки) (Hsp70 взаимодействующий белок)
219437_s_at
0. 689
0,00013
4,041613
-0,469
0,896316
ANKRD11
анкириновый повторяющийся домен 11
Чтение данных
В проекте используются следующие типы файлов данных: fasta, csv и udb. Формат Fasta представляет собой текстовый формат для представления последовательностей нуклеотидов или аминокислот (белков). Для чтения данных из csv файлов использовалась библиотека Pandas на python. Для чтения файлов формата fasta использовалась библиотека biopython. И, чтобы прочитать файл udb, который был файлом 3D-изображения для генов, считанных библиотекой nglview. Чтобы понять белок, важна трехмерная структура, которая говорит больше о связи атомов и сворачивании белков.
Разработка признаков в наборе данных «A»: набор данных с целевым значением был сделан с использованием морских животных и панд. Были проверены самые высокие коррелированные значения, код добавлен в приложение, а результаты объяснены в главе 4. Этот набор данных содержит столбец «имя», который не использовался и был удален непосредственно для моделирования. Следующим шагом является проверка нулевых значений, и это зависит от набора данных, что делать с этими нулевыми значениями, чтобы удалить эти строки или заполнить их значениями. Однако этот набор данных не содержит нулевых значений. Перед предоставлением подготовленных данных в модель набор данных был разделен на разбиение на поезд-тест с 70% обучением и 30% тестированием с random_state 42. Это разделение играет важную роль в обучении и оценке требуемого бинарного классификатора. Обучающие данные — это предварительно помеченные данные, из которых классификатор учится для построения модели для прогнозирования класса невидимых новых тестовых данных. Тестовые данные играют роль в оценке, что означает проверку того, как модель научилась и способна обобщать, чтобы не видеть тестовые экземпляры. Существует несколько способов проверить точность модели.
3.3.2 Моделирование, используемое для набора данных «A»:
Цель эксперимента: поскольку предварительно размеченный набор данных A содержит функции из голосовых записей, которые используются врачами для диагностики того, есть ли у пациента болезнь Паркинсона или нет, машинное обучение и алгоритмы бинарной классификации с глубоким обучением, чтобы иметь возможность предсказывать новых испытуемых по их голосам в электронном виде.
Точная настройка гиперпараметров. Мы использовали автоматическую настройку гиперпараметров, чтобы оценить наилучшие значения для применения к классификаторам. Данные были обучены и протестированы с различными настройщиками гиперпараметров, окончательные гиперпараметры использовались для рандомизированного поиска (случайный поиск устанавливает сетку значений гиперпараметров и выбирает случайные комбинации для модели):
Параметры
Значения
N_estimators
10 100 200 500, 1000, 1200
max_depth
Нет, 5,10,20,30
max_features
auto, sqrt
min_samples_split
2, 4,6
min_samples_leaf
1,2,4
Все функции такие же, как и при случайном поиске, за исключением n_iter, потому что при поиске по сетке он проверяет все возможные комбинации обучающих данных и пытается дать наилучшие оценки для тестовых данных. После всего этого процесса пришло время для оценки модели, поскольку это проблема классификации, оценка модели выполняется по 4 показателям производительности: точность, точность, полнота и f1.
Вся эта часть была выполнена с использованием только классификатора Random Forest с использованием базовой модели, random_search и grid_search.
3.4.1 Разработка признаков в наборе данных «B»:
Цель эксперимента: начиная с набора данных B содержит 250 лучших генов, которые либо активируются, либо подавляются у пациента с БП по сравнению со здоровым человеком, модели, которые можно применить к этому набору данных, представляют собой любые алгоритмы регрессии ML или DL для прогнозирования значений logFC для каждого гена. включен в эксперимент.
Как упоминалось выше, этот набор данных состоит из 250 генов, затронутых болезнью Паркинсона, после проверки информации с помощью панд. Он содержит идентификатор, Gene.symbol, Gene.title в виде объекта или строки. Все функции должны быть числовыми, а не категориальными, поэтому преобразование всех категориальных строк в числовые может привести к большому набору данных, что может привести к переоснащению, более медленному обучению, меньшей точности, невозможности визуализации и менее объяснению. Однако функция «ID» содержит только идентификатор пациента, поэтому для моделирования это было бесполезно, и столбец был исключен. Следующие 2 функции имеют детали символов генов и заголовков генов и имеют 223 уникальных значения, поэтому преобразование в числовые значения приводит к огромному набору данных. Добавление этих многих функций может привести к переоснащению, а это плохо для модели. Однако, прежде чем отбрасывать эти функции, лучше увидеть поведение гена, которое было выполнено для значения logFC, поскольку это значение предназначено для значений свертывания генов и было выполнено с использованием ggplot с geom_point и geom_bar.ggplot — это визуализация данных с открытым исходным кодом. пакет, который может указывать данные карты для визуализации объектов, составляющих визуализацию. Как уже упоминалось в наборе данных, значения менее 0,202 считались генами с пониженной регуляцией. Тем не менее, это также было сделано для проверки значительного поведения генов с использованием вулканического графика из библиотеки bioinfokit, и код для всех частей был добавлен в приложение. Вулканический график — это тип графика рассеяния, который показывает статистическую значимость между значением P и кратным изменением и может легко идентифицировать гены с большими кратными изменениями, которые также являются статистически значимыми. Целью этого набора данных является поиск экспрессии гена с точки зрения повышающей и понижающей регуляции, поэтому функция logFC рассматривается как зависимая или выходная для модели, а все другие числовые переменные - как входные переменные. Затем набор данных был разделен на разделение на поезд-тест с помощью scikit-learn. Также необходимо решить другие проблемы, такие как пропущенные значения и преобразование всех признаков в числовые значения. С помощью преобразователя столбцов из пакета обучения scikit был создан числовой преобразователь для преобразования функций в числовые при заполнении отсутствующих значений.
3.4.2 Моделирование, используемое для набора данных «B»:
Этот набор данных требует задачи регрессии, поскольку основное внимание в этом наборе данных уделяется оценке значений logFC каждого гена, включенного в эксперимент. Оценщики регрессии, используемые для этой задачи, представляли собой регрессию Риджа, SVM и регрессор случайного леса. Это модели обучения с учителем, так как они были обозначены и оценены с использованием показателей MAE, MSE, RMSE и r_2. база данных представляет собой набор последовательностей из нескольких источников, включая GenBank, RefSeq, TPA и PDB. Данные о последовательности генома, генов и транскриптов обеспечивают основу для биомедицинских исследований и открытий». Нуклеотиды для генов (альфа-синуклеин или SNCA, Lrrk-2, Parkin и Pink1) были загружены из базы данных NCBI, а нуклеотиды доступны в формате fasta. Формат fasta читался с помощью biopython с seqIO. Затем с помощью метода транскрипции он превращается в мРНК, которая является информационной рибонуклеиновой кислотой, и это промежуточный этап между трансляцией ДНК и белка. Для преобразования мРНК в белок использовали метод трансляции биопитона, в котором «*» обозначает стоп-кодон. Функция с именем fillMatrix была создана с решениями для точечной диаграммы, рассказывающей о выровненных и невыровненных основаниях. Сопоставитель точек используется здесь для проверки выравнивания между двумя последовательностями. Следующей функцией была fill_print, которая создавала точечный график, а последней функцией была fill_plot, которая печатала этот точечный график.
3.6.1 Разработка характеристик и моделирование набора данных «C»:
SARIMAX: этот набор данных использовался для анализа временных рядов пациентов. В случае болезни Паркинсона время играет жизненно важную роль из-за связи между нейронами, и если есть задержка в этой связи, это может привести к некоторому неврологическому заболеванию. Перед подачей данных непосредственно в модель необходимо выполнить сезонность, поскольку она определяет параметры и тип моделей, которые будут использоваться для прогнозирования. Чтобы предоставить данные для модели SARIMAX, данные должны быть в формате, требуемом анализом временных рядов для моделирования, в котором индекс должен быть в формате даты и времени с одинаковой возрастающей частотой, поэтому невозможно проверить всех пациентов за один раз. в то же время с использованием модели SARIMAX из-за ее ограничений, поскольку частота начинается с 0 для каждого пациента, поэтому были проанализированы 2 пациента обоих типов. Исходный набор данных содержал исходное значение времени, с которого начинается эксперимент, с целочисленным значением, которое было преобразовано в частоты даты и времени. Тренд и сезонность проверялись с помощью Season_decompose. сезонное разложение использовалось с использованием библиотеки statsmodels, а аддитивная модель использовалась, поскольку она показывает постоянные сезонные изменения во времени для давления, применяемого при создании чертежа, которые отслеживались при задании различных настроек координат с использованием идентификатора теста. Тренд описывает увеличение или уменьшение значения в ряду, сезонность показывает повторяющийся краткосрочный цикл в ряду, тогда как он также измеряет два других графика: уровень и шум/остатки. Уровень определяется как среднее значение в ряду, а шум говорит о случайных изменениях в ряду. Существует два типа моделей, которые мы можем в дальнейшем использовать, и они являются аддитивными и мультипликативными: вариации относительно постоянны во времени.
Мультипликативная: эту модель можно использовать, когда есть некоторая нелинейность, и она меняется, увеличиваясь или уменьшаясь со временем.
Поскольку обязательно знать, что данные стационарный или нет, потому что по результату должны быть выбраны модели, и это было сделано с помощью ad-fuller через statsmodels и была сделана функция adf_test для проверки результата. Для моделирования временных рядов использовалась автоматическая Arima, поскольку она сообщает, какую модель лучше всего использовать в соответствии со значением AIC (информационный критерий Акаике), которое является оценкой ошибки прогнозирования, поскольку более низкое значение AIC указывает на лучший порядок для модели. Для анализа временных рядов использовались модели ARIMA и SARIMAX. И оценка была выполнена с использованием показателей оценки регрессии.
Рекуррентная нейронная сеть: для этой модели столбец пациентов в строках и идентификатор пациента использовались в качестве основного заголовка, а характеристики этого пациента использовались в качестве подзаголовков. Позже были добавлены дополнительные функции, названные часами, минутами и секундами под различными заголовками, которые были взяты из частоты индекса. Были определены две модели RNN, одна для контроля, а вторая для PD. Целевой пациент получил 1 для контроля и 1 для ПД, а целевыми характеристиками были давление и угол захвата. Позже было выполнено разделение тестов поезда, и были определены сигналы x, которые представляли собой только целые функции, подаваемые в модель в качестве примера (5011, 28), поэтому 28 определялись в сигналах x, а сигналы y были целевыми функциями для модели. Данные не были должным образом обработаны, и в данных было так много отсутствующих значений из-за разного времени завершения чертежей, поэтому отсутствующие были удалены, а для масштабирования всего набора данных использовался мин.-макс. масштабатор. Создан генератор пакетов функций, который содержит два атрибута: размер пакета и длину последовательности. Используемый размер партии был 256, а длина последовательности 600, что означает 10 минут. Поскольку весь этот процесс выполнялся на обучающих данных, а пакетный генератор формировал трехмерную форму, а проверочные или тестовые данные все еще были двухмерными, поэтому с помощью expand_dims из TensorFlow было добавлено третье измерение для той же размерности. Использовалась последовательная модель, в которой к 1-му слою ГРУ добавлялись 512 нейронов с входной формой (Нет, сигнал x), затем добавлялся плотный слой с единицами (сигнал y) и использовалась сигмоидальная функция активации, а если активация не обеспечивалась линейная активация будет использоваться в будущем. Для проверки эффективности оценки использовали среднеквадратичную ошибку. Для повышения производительности модели использовалась RMSprop со скоростью обучения (1e-3), а в качестве функций обратного вызова использовались Early stop и ReduceRonPlateau. Модель была дополнена используемыми атрибутами (генератор, эпохи = 20, steps_per_epoch = 100, данные проверки, обратные вызовы). Наконец, был построен сравнительный график между углом захвата и давлением во времени с использованием функции plot_comparison, которая принимала 3 атрибута (start_idx, length, train). Start_idx означает начальное положение индексации относительно времени, которое мы хотим знать о поведении, длину, указывающую, до какого времени мы хотим измерить, и у поезда было два значения True и False.
3.6.1 Разработка функций и моделирование набора данных 'D':
.wav был прочитан с помощью библиотеки librosa, а файл .wav можно прочитать с помощью других библиотек, а также с помощью SciPy, однако преимущество библиотеки librosa заключается в том, что все аудиосэмплы будут иметь одинаковую частоту дискретизации. и голосовые данные, масштабированные самой библиотекой.
Извлечение функций:
Глава 5 – Заключение и этика
5.1.0 Вывод из набора данных «A»:
Из рисунка 13 можно сделать вывод, что лучшие показатели с точки зрения точности, воспроизводимости и f1 были выполнены 2 модели, и они работали почти одинаково, модели, которые работали лучше для этой конкретной задачи классификации, были базовыми (случайный классификатор леса) и CV поиска по сетке, и можно сделать вывод, почему случайный поиск не показал наилучшую производительность с поиском по сетке, потому что проверка алгоритма поиска по сетке для каждого возможного заданного гиперпараметра, тогда как случайный поиск осуществляется случайным образом. И если мы внимательно посмотрим на ROC_curve, то они охвачены ROC для TPR в поиске по сетке и базовой линии были почти одинаковыми, тогда как при случайном поиске покрываемая область была больше для FPR и меньше для TPR по сравнению с другими.
5.2.0 Вывод по набору данных "B" для регрессии:
Поскольку это была задача регрессии и по производительности, с точки зрения оценки можно сделать вывод, что SVR_linear работала лучше всего с результатом 84,3%, но две другие модели регрессионного гребня и SVR_rbf работали почти одинаково с 84,1% и 83,59%, а наихудшей моделью был регрессор случайного леса с результатом 76,85%, но, согласно проведенному обзору литературы, он был известен как регрессор случайного леса, который всегда работает лучше всего, но в случае набора данных 'B' записано, так как он работал хуже всего. Кроме того, также делается вывод о том, что настройка гиперпараметров и разработка функций могут привести к улучшению работы моделей.
5.3.0 Вывод из набора данных «C» для анализа временных рядов:
Задача этого набора данных заключалась в мониторинге давление по отношению ко времени с помощью различных заданных координат. Если мы внимательно заметим, что контрольные пациенты для разных углов захвата и давления были почти одинаковыми. Однако, когда мы обращаем внимание на модели SARIMAX для контрольной группы и пациентов с болезнью Паркинсона, у контрольных пациентов поведение давления изменяется, когда была введена координата z, и давление приходит в нормальную зону давления после удаления этой координаты z, тогда как у пациентов с болезнью Паркинсона это может потребоваться несколько шагов, чтобы прийти к нормальному давлению протяжки. Более того, в модели RNN разные углы захвата говорят о поведении давления, приложенного к рисунку, и у контрольных пациентов прикладываемое давление было почти одинаковым при разных углах захвата, тогда как у пациентов с болезнью Паркинсона при изменении угла захвата происходило много активности. . Таким образом, пациентам с болезнью Паркинсона требовалось гораздо больше усилий, чтобы нарисовать любой рисунок, и, как правило, требовалось больше времени от контрольных пациентов. Однако, если они раньше или вовремя закончат сравнение с контрольными пациентами, они использовали гораздо больше вариаций давления, и эта стадия, рассматриваемая как начальная фаза модели Паркинсона, и особенно модель SARIMAX, будет гораздо более полезной для исследований с одним пациентом и РНН для судить о фазах болезни Паркинсона.
5.4.0 Вывод из набора данных «D» для анализа записи голоса:
После анализа цифр установлено, что у пациента с болезнью Паркинсона кажется гораздо больше разрыв между высокими частотами, и тем не менее они не могут для высоких частот сравниваться со здоровым пациентом, имеют меньший разрыв с частотой до 0,60. Модель Энн дает точность 80%, при которой точность PD хорошо работает для отзыва, а у здорового пациента с оценкой f1 работает хорошо.
5.5.0 Этика:
Проблемы с генетическим тестированием (подразумевают анализ хромосом, генов (ДНК) и белков:
🡪 Семейные проблемы — конфиденциальность, конфиденциальность результатов; принуждение к тестированию,
тестирование людей в 25 лет) % риска.
Влияние клинических испытаний на предмет. (Ресурсы, 2021 г.)
Юридические вопросы:
🡪Набор данных испытаний субъектов не должен быть изменен.
🡪Необходимо соблюдать нейроэтику, биоэтику и этику компьютерных наук.
Освещение, документы о плохих результатах от испытания и модели.
Биострахование должно быть на клиническом испытании с утвержденной лицензией.
Надлежащие договоренности об испытании с субъектом. (Ресурсы, 2021 г.)
Профессиональные проблемы:
Тематические испытания не допускаются без надлежащей утвержденной лицензии.
Набор данных клинических испытаний должен управляться должным образом без каких-либо изменений и работать в соответствии с соглашением.
> Действия должны быть адекватными на основе анализа данных и моделирования заболевания. (Ресурсы, 2021 г.)
Вычислительная нейроэтика:
🡪Конфиденциальность и согласие из-за огромного количества данных, получаемых исследователями из испытаний данных людей.
Агентство и личность (испытательное агентство должно быть известно из-за предоставлен доступ к мозгу).
Аугментация — давление с целью внедрения новейших технологий в нейро.
🡪Предвзятость — исходит из области машинного обучения, к которой следует обращаться до первого этапа разработки
5.6.0 Будущая работа:
Этот проект был основан исключительно на тестах PD и на понимании поведения генов. Дальнейшая работа, которую я выполняю, связана с созданием мозговой среды с помощью разработки игр, которые дополнительно накладываются на обучение с подкреплением, чтобы лучше понять пути и создание мозга.
Следующая работа будет посвящена набору данных PPMI для лечения леводопой и другими лекарствами, чтобы узнать поведение ответов на болезнь Паркинсона.
Дальнейший подход к анализу генов будет осуществляться с использованием преобразователя Prot Bert и должен выполняться в AWS для вычислительных ресурсов с использованием Sage Maker.
Ссылки
Alliance, G. & Services., T. N. Y.-M.-A. С. ф. Г. а. NS, 2009. Понимание генетики: Нью-Йорк, Среднеатлантическое руководство для пациентов и медицинских работников.. sl:Genetic Alliance.
Awasthi, S., 2020. СЕМЬ САМЫХ ПОПУЛЯРНЫХ ЯДРОВ SVM. [В сети]
Доступно по адресу: https://dataaspirant.com/svm-kernels/#t-1608054630730
Бхардвадж С., 2021 г. Полное руководство по SARIMAX в Python для моделирования временных рядов. [Онлайн]
Доступно по адресу: https://analyticsindiamag.com/complete-guide-to-sarimax-in-python-for-time-series-modeling/
Brownlee, J., 2014. Откройте для себя Разработка функций, как разрабатывать функции и как в этом преуспеть. [Онлайн]
Доступно по адресу: https://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/
Hemalatha Sasidharakurup, PDV, 2017. Компьютерное моделирование апоптоза при болезни Паркинсона с использованием теории биохимических систем. Удупи, IEEE, стр. 515-521.
Нархеде, С., 2018. Кривая, Понимание AUC - ROC. На пути к науке о данных.
Publications, S., 2017. Узнайте о временных рядах ACF и. Публикации SAGE.
Радж, А., 2020 г. Раскрытие истинной силы регрессии опорных векторов. На пути к науке о данных.
Рафаэль Ленейн, J. W. A. S. E. F., 2020. Доска для серфинга: извлечение аудиофункций для современного машинного обучения. paperswithcode.
Resources, PA, 2021. Болезнь Паркинсона и юридические вопросы. [В сети]
Доступно по адресу: https://www.youtube.com/watch?v=bo_8zTMeNrQ&t=443s
Сахани Д., 2020 г. Общие сведения о CountVectorizer, Tfidftransformer и Tfidfvectorizer с CalculationD. [Онлайн]
Доступно по адресу: https://sahanidharmendra19.medium.com/understanding-countvectorizer-tfidftransformer-tfidfvectorizer-with-calculation-7d509efd470f
Суручи Бакши, V.C.C.C.P.H. v.d. Г., 2018. Математические биологические модели болезни Паркинсона. CPT: Фармакометрия и системная биология, 2(2), стр. 77-86.
Брундин, Дж. Л. а. С., 2002. Патогенез болезни Паркинсона: дофамин, везикулы и α-синуклеин. Nature Reviews Neuroscience, Volume 3, pp. 932-942.
Medicine, JH, 2019. Генетические мутации при болезни Паркинсона | 2019 Исследовательский симпозиум Udall Center. [Онлайн]
Доступно по адресу: https://www.youtube.com/watch?v=T6VSh35z80Y
Мохаммад Данешзанд, M.F.B.B., 2015. Гиперболическая модель нейронных спайков. [Онлайн]
Доступно по адресу: https://scholarworks.bridgeport.edu/xmlui/handle/123456789/1165
Сагар Шарма, 2017, Доступные функции в нейронных сетях. [Онлайн]
Доступно по адресу: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6
Мохамад Алисса, 2018 г., Диагностика болезни Паркинсона с использованием глубокого обучения. [Онлайн]
Доступно по ссылке: https://arxiv.org/ftp/arxiv/papers/2101/2101.05631.pdf
6.2.0 Код для задачи классификации набора данных 'A':
df2 = pd.read_csv('Болезнь Паркинсона.csv')
df2.head()
df2.info()
df2.describe()
df2.isnull().sum()
df2.drop('name', axis=1,inplace=True)
plt.figure(figsize= (15,8))
sns.heatmap(df2.corr(),vmin=-1,vmax=1,annot=True)
sns.relplot(x='spread1', y=' spread2',hue='status',data=df2)
sns.relplot(x='spread2', y='PPE',hue='status',data=df2)
sns.relplot (x='spread1', y='PPE',hue='status',data=df2)
## посмотрим на статус и проверим нормальное распределение по PPE со статусом
plt.figure(figsize=(15,8))
g = sns.FacetGrid(df2,col='status',palette='Set1',col_wrap=2)
g.map(plt .hist,'PPE',bins=100,ec='k')
g.axes[-1].legend()
plt.show()
# # давайте посмотрим на статус и проверим нормальное распределение по спреду, так как статус сильно коррелирует с разворотом1
plt.figure(figsize=(15,8))
g = sns.FacetGrid(df2,col= 'status',palette='Set1',col_wrap=2)
g.map(plt.hist,'spread1',bins=100,ec='k')
g.axes[-1 ].legend()
plt.show()
sns.countplot(x='status',data=df2)
x = df2.drop('status', axis=1).values
y = df2['status'].values
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0,3,random_state=42)
создание функции для оценки прогнозов и возврата значения в виде словаря в metic_dict
def Assessment_preds(y_true,y_pred):
точность = точность_оценки(y_true, y_pred )
точность = показатель_точности (у_истина, у_пред)
отзыв = показатель_повторения (у_истина, у_пред)
f1 = f1_оценка (у_истина, у_пред)
metric_dict = {'точность ':round(точность,2),
'точность':round(точность,2),
'отзыв': round(отзыв,2),
'f1':round(f1 ,2)}
print(f'acc : {точность * 100:.2f}%')
print(f'precision : {точность * 100:.2f}%')
print(f'recall : {recall * 100:.2f}%')
print(f'f1 : {f1 * 100:.2f}%')
return metric_dict
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(x_train,y_train)
clf.score(x_test,y_test)
< br /> y_preds = clf.predict(x_test)
#оценить прогнозы
baseline_metrics = Assessment_preds(y_test,y_preds)
Настройка гиперпараметров с помощью RandomizedSearchCV
from sklearn.model_selection import RandomizedSearchCV
grid = {'n_estimators': [10,100,200,500,1000,1200],
'max_depth': [Нет,5,10,20,30],
'max_features':['auto','sqrt'],
'min_samples_split':[2,4,6],
'min_samples_leaf':[1,2,4]}
np.random.seed(42)
#инициировать randomforestclassifer
clf = RandomForestClassifier(n_jobs=1)
#setup randomized searchcv
rs_clf = RandomizedSearchCV(estimator=clf,
param_distributions=grid,
n_iter=10,
cv=5,
verbose=2)
rs_clf.fit(x_train,y_train);
rs_clf.best_params_
rs_y_preds = rs_clf.predict(x_test)
#оценить прогнозы
rs_metrics = Evaluate_preds(y_test,rs_y_preds)
Гипернастройка с GridSearchCV, в отличие от RandomSearchCV, GRidSearchCV просматривает все возможные комбинации, тогда как в RamdomSearchCV он находит только предоставленные итеры, а затем пробует случайные комбинации
grid_2 = {'max_depth': [Нет],
'max_features': ['auto', 'sqrt'],
'min_samples_leaf': [1, 2],
'min_samples_split': [6],
'n_estimators': [100, 200, 500]}
from sklearn.model_selection import GridSearchCV
#initiate randomforestclassifer
clf = RandomForestClassifier(n_jobs=1)
#setup Gridsearchcv
gs_clf = GridSearchCV(estimator=clf,
param_grid=grid_2,
cv=5,verbose=2)
gs_clf .fit(x_train,y_train);
gs_clf.best_params_
gs_y_preds = gs_clf.predict(x_test)
#оценить показатели
gs_metrics = Assessment_preds (y_test,gs_y_preds)
давайте сравним метрики после всех hypertuning_paramters
compare_metrics = pd. DataFrame({'базовый уровень': baseline_metrics,
'rs_metrics': rs_metrics,
'gs_metrics':gs_metrics})
compare_metrics
compare_metrics.plot.bar(figsize =(15,7))
from sklearn.metrics import roc_curve
#делаем прогнозы с вероятностями
clf.fit(x_train,y_train)
y_probs = clf.predict_proba(x_test)
rs_probs = rs_clf.predict_proba(x_test)
gs_probs = gs_clf.predict_proba(x_test)
y_probs_positive = y_probs[:, 1]
rs_probs_positive = rs_probs[:,1]
gs_probs_positive = gs_probs[:,1]
y_probs_positive[:5], rs_probs_positive[ :5], gs_probs_positive[:5]
def plot_curve(fpr, tpr):
'''
построить roc-кривую с учетом коэффициента ложных срабатываний (fpr)
и истинного положительная скорость (tpr) модели.
'''
plt.plot(fpr,tpr,color='orange', label= 'ROC')
#plot строка без предсказательной силы
plt.plot([0,1], [0,1], color='darkblue',linestyle='--', label='guessing') # добавление строки - ----
#настроить график
plt.xlabel('fpr')
plt.ylabel('tpr')
plt.title('Receiver кривая рабочей характеристики (ROC)')
plt.legend()
plt.show()
#рассчитать fpr, tpr и пороговые значения для базовой модели
fpr ,tpr,thresholds = roc_curve(y_test,y_probs_positive)
#рассчитать для ramdomzied searchcv
fpr_rs,tpr_rs,thresholds_rs = roc_curve(y_test,rs_probs_positive)
#calculate для Grid searchcv
fpr_gs,tpr_gs,thresholds_gs = roc_curve(y_test,gs_probs_positive)
базовая кривая roc
plot_curve(fpr,tpr)
#rs кривая roc
plot_curve(fpr_rs,tpr_rs)
#gs кривая roc
plot_curve(fpr_gs,tpr_gs)
Код 6.3.0 для задачи регрессии набора данных 'B':
df = pd.read_excel('top250parkinsonsgenes.xlsx')
#checking the dataframe
df.head()
df.info()
df.describe()
#удаление столбца Id, поскольку они не влияют на поиск генов PD
df = df.drop('ID', axis=1 )
df.head()
ggplot(df) + aes(x='Gene.symbol',y='logFC') + geom_point()
plt.figure(figsize=( 15,10))
ggplot(df) + aes(x='Gene.symbol',y='logFC') + geom_bar(stat='identity')
ggplot(df) + aes( x='P.Value',y='logFC') + geom_line()
visuz.gene_exp.volcano(df=df, lfc='logFC', pv='P.Value',lfc_thr=(0,202 ,1), pv_thr=(0.05, 0.01), plotlegend=True, legendpos='верхний правый',
legendanchor=(1.46,1))
#проверка нулевых значений в этом фрейме данных
df.isnull().sum()
#проверка количества уникальных значений
df['Gene.symbol'].nunique()
#проверка количества этих уникальных значений< br /> df['Gene.symbol'].value_counts()
df = df.drop('Gene.symbol', axis=1)
#всего 136 генных символов являются активными генами со 150 повышающие значения в наборе данных с диапазоном от 0,202 до 1,149
df[df['logFC'] ›= 0,202].count()
#всего 98 генов являются подавляющими генами в соответствии со значениями logFC с диапазон от -0,188 до -1,262
df[df['logFC']‹0,202].count()
df1 = df.select_dtypes(exclude=['O'])
df1 .info()
x = df1.iloc[:,:-1]
y = df1.iloc[:,-1]
X_train, X_test, y_train, y_test = train_test_split(x , y, test_size=0.2, random_state=101)
df1.columns
# Определение числовых признаков
numeric_features = ['adj.P.Val', 'P.Value', 't' , 'B']
# Создать числовой преобразователь Pipeline
numeric_transformer = Pipeline(steps=[
# Установить стратегию SimpleImputer для заполнения пропущенных значений медианой, если они есть
(imputer, SimpleImputer(strategy=median))])
# Настройка шагов предварительной обработки (заполнение пропущенных значений)
preprocessor = ColumnTransformer(
transformers=[
# Использование numeric_transformer для преобразования the numeric_features
(num, numeric_transformer, numeric_features)])
# Создать словарь экземпляров модели, всего должно быть 4 пары ключ-значение
# в виде {model_name: model_instance}.< br /> # Не забывайте, что существует две версии SVR, одна с линейным ядром, а другая
# с ядром, установленным на rbf.
regression_models = {Ridge: Ridge(),
SVR_linear: SVR(kernel=linear),
SVR_rbf: SVR(kernel=rbf),
RandomForestRegressor: RandomForestRegressor()}
# Создать пустой словарь для результатов регрессии< br /> regression_results = {}
# Перебрать элементы в словаре regression_models
for model_name, model in regression_models.items():
# Создать конвейер модели с шаг препроцессора и шаг модели
model_pipeline = Pipeline(steps=[(препроцессор, препроцессор),
(модель, модель)])
# Подгонка конвейера модели к обучающим данным
print(fПодгонка {имя_модели}. ..)
model_pipeline.fit(X_train, y_train)
# Оценка конвейера модели на тестовых данных с добавлением имени модели в
# словарь результатов
print( fScoring {model_name}...)
regression_results[model_name] = model_pipeline.score(X_test,
y_test)
# Проверьте результаты каждой регрессионной модели, распечатав regression_results
# словарь
regression_results
# Создать конвейер RidgeRegression с препроцессором в качестве препроцессора и
# Ridge() в качестве модели.
ridge_pipeline = Pipeline(steps=[(препроцессор, препроцессор),< br /> (model, Ridge())])
# Подгонка конвейера RidgeRegression к обучающим данным
ridge_pipeline.fit(X_train, y_train)
# Делайте прогнозы по данным теста y с помощью RidgeRegression Pipeline
y_preds = ridge_pipeline.predict(X_test)
# Просмотрите первые 50 прогнозов
y_preds[:50]
Теперь у нас есть некоторые прогнозы, время их оценить. Мы найдем среднеквадратичную ошибку (MSE), среднюю абсолютную ошибку (MAE) и оценку R^2 (коэффициент детерминации) нашей модели.
plt.scatter(y_test,y_preds)
sns. distplot((y_test-y_preds),bins=50);
Сравнение этих показателей:
MAE проще всего понять, потому что это средняя ошибка. MSE более популярен, чем MAE, потому что MSE наказывает за большие ошибки, что, как правило, полезно в реальном мире. RMSE даже более популярен, чем MSE, потому что RMSE интерпретируется в единицах y. Все это функции потерь, потому что мы хотим минимизировать их.
from sklearn import metrics
print('MAE:', metrics.mean_absolute_error(y_test, y_preds))
print('MSE :', metrics.mean_squared_error(y_test, y_preds))
print('RMSE:', np.sqrt(metrics.mean_squared_error(y_test, y_preds)))
print('r2_score', r2_score(y_test ,у_предс))
- 6.6.0 Код для анализа временных рядов:
import pymcmcstat
import pmdarima
from pmdarima import auto_arima
from statsmodels.tsa.statespace.sarimax import SARIMAX
from statsmodels. tsa.stattools импортирует acovf,acf,pacf,pacf_yw,pacf_ols
из pandas.plotting, импортирует lag_plot
из statsmodels.graphics.tsaplots, импортирует plot_acf,plot_pacf
из statsmodels.tsa.arima_model, импортирует ARMA, ARIMA,ARIMAResults,ARMAResults
импортировать дату и время
из statsmodels.tsa.seasonal, импортировать сезонное_разложение
импортировать Seaborn как sns
time = pd.read_excel('time.xlsx')
time.head()
time['t_main'] = pd.to_datetime(time['t_main'] time = time.rename(columns={'patient_type.1':'patient_type'})
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
time['тип_пациента'] = encoder.fit_transform(time['тип_пациента'])
sns.heatmap( time.corr(),annot=True)
plt.figure(figsize=(16,6))
sns.boxplot(x=time['давление'],y=time['testid' ])
sns.scatterplot(data=time,x='давление',y='угол захвата',hue='patient_type',alpha=0,4)
time.pressure.plot(figsize=(15 ,6))
ax = время['давление'].plot(figsize=(16,6))
для i в time.query('patient_type==1'). index:
ax.axvline(x=i,color='black',alpha=0.5)
ax = time['давление'].plot(figsize=(16,6))
для i в time.query('patient_type==0').index:
ax.axvline(x=i,color='red',alpha=0.5)
время. set_index('t_main',inplace=True)
time = time.drop(['patient_type','timestamp'], axis=1)
pd1 = pd.read_excel('pd1.xlsx')
pd2 = pd.read_excel('pd2.xlsx')
c1 = pd.read_excel('control1.xlsx')
c2 = pd.read_excel('c2.xlsx')
len(pd1), len(pd2)
len(c1), len(c2)
pd1['time'] = pd.DataFrame(pd.date_range('20210101 00:00:00 ',freq='9S',periods=2627))
pd1.set_index('time',inplace=True)
pd2['time'] = pd.DataFrame(pd. date_range('20210101 00:00:00',freq='9S',periods=5595))
pd2.set_index('time',inplace=True)
c1['time'] = pd .DataFrame(pd.date_range('20210101 00:00:00',freq='7S',periods=6815))
c1.set_index('time',inplace=True)
c2['time'] = pd.DataFrame(pd.date_range('20210101 00:00:00',freq='7S',periods=6109))
c2.set_index('time',inplace= True)
c1.index.freq = '7S'
c2.index.freq = '7S'
pd1 = pd1.rename(columns={'patient_type.1':'patient_type' })
pd2 = pd2.rename(columns={'patient_type. 1':'тип_пациента'})
c1 = c1.rename(columns={'тип_пациента.1':'тип_пациента'})
c2 = c2.rename(columns={'тип_пациента.1' :'тип_пациента'})
pd1.index.freq = '9S'
pd2.index.freq = '9S'
c1.drop(['тип_пациента','тип_пациента',' timestamp'], axis=1,inplace=True)
c2.drop(['patient_type','patient_type','timestamp'], axis=1,inplace=True)
pd1.drop( ['тип_пациента','тип_пациента','отметка_времени'],ось=1,inplace=True)
pd2.drop(['тип_пациента','тип_пациента','отметка_времени'],ось=1,inplace= True)
decompfreq = 514
результат = сезонное_разложение (c1 ['давление'], период = decompfreq)
result.plot();
fig, (ax1,ax2) = plt.subplots(ncols=1,nrows=2,figsize=(16,6))
ax1.plot(result.seasonal),
ax2.plot(result.trend)
decompfreq = 514
result_c2 = Season_Decompose(c2['давление'],freq=decompfreq)
result_c2.plot();
fig, (ax1,ax2) = plt.subplots(ncols=1 ,nrows=2,figsize=(16,6))
ax1.plot(result_c2.seasonal),
ax2.plot(result_c2.trend)
decompfreq = 400 #60/9 * 60. ncols=1,nrows=2,figsize=(16,6))
ax1.plot(result_pd.seasonal),
ax2.plot(result_pd.trend)
decompfreq = 400 # длина строк/частота = 2627/9
result_pd2 = Season_decompose(pd2['давление'],freq=decompfreq)
result_pd2.plot();
fig, (ax1,ax2) = plt .subplots(ncols=1,nrows=2,figsize=(16,6))
ax1.plot(result_pd2.seasonal),
ax2.plot(result_pd2.trend)
из statsmodels .tsa.stattools import adfuller
def adf_test(series,title=''):
print(f'Расширенный тест Дики-Фуллера: {title}')
result = adfuller(series.dropna(),autolag='AIC') # в случае, если в данных отсутствуют значения
labels = ['Статистика теста ADF','p-value','Использованные задержки','Наблюдения ']
out = pd.Series(result[0:4],index=labels)
for key,val in result[4].items():
out [f'критическое значение ({key})'] = val
print(out.to_string()) # incase dtype:float64
if result[1] ‹= 0.05:
print('Убедительные доказательства против нулевой гипотезы')
print('отвергнуть нулевую гипотезу')
print('данные не имеют единичного корня и являются стационарными')
else:
print('недельное свидетельство против нулевой гипотезы')
print('Не удалось отвергнуть нулевую гипотезу')
print('данные имеют единичный корень и не являются стационарными')
adf_test(c1['давление']), adf_test(c2['давление'])
adf_test(pd1['давление']), adf_test(pd2['давление'])
auto_arima(c1['давление'],seasonal=False).summary(), auto_arima(c2['давление'],seasonal=False).summary()
train_c1= c1.iloc[:6500]
test_c1 = c1.iloc[6500:]
train_c2 = c2.iloc[:5700]
test_c2 = c2.iloc[5700:]
#if value_error :non -найдены параметры инвертируемой начальной скользящей средней, используйте forceforce
model_c1 = SARIMAX(train_c1['давление'],order=(5,2,1),enforce_invertibility=False)
#if value_error :необратимая начальная скользящая средняя Найденные параметры используют Enforce
model_c2 = SARIMAX(train_c2['давление'],order=(1,2,5),enforce_invertibility=False)
results_c1 = model_c1.fit()
results_c2 = model_c2.fit()
results_c1.summary(), results_c2.summary()
start_c1 = len(train_c1)
end_c1 = len(train_c1) + len(test_c1) - 1
>
start_c2 = len(train_c2)
end_c2 = len(train_c2) + len(test_c2) - 1
Predicts_c1 = results_c1.predict(start_c1,end_c1).rename(' Модель SARIMAX c1')
ax_c1 = train_c1['давление'].plot(legend=True, figsize=(15,6))
прогнозы_c1.plot(legend=True)
прогнозы_с2 = результаты_с2.predict(start_c2,end_c2).rename('Модель SARIMAX c2')
ax_c2 = train_c2['давление'].plot(legend=True,figsize=(15,6 ))
Predicts_c2.plot(legend=True)
auto_arima(pd1['давление'],seasonal=False).summary(), auto_arima(pd2['давление'],seasonal=False). summary()
len(pd1), len(pd2)
train_pd1= pd1.iloc[:2500]
test_pd1 = pd1.iloc[2500:]
train_pd2 = pd2.iloc[:5000]
test_pd2 = pd2.iloc[5000:]
#if value_error :найдены необратимые параметры начального скользящего среднего, используйте forceforce
model_pd1 = SARIMAX(train_pd1[' давление'],order=(5,1,5),enforce_invertibility=False)
#if value_error :найдены необратимые параметры начальной скользящей средней, используйте forceforce
model_pd2 = SARIMAX(train_pd2['давление'], order=(5,1,5),enforce_invertibility=False)
results_pd1 = model_pd1.fit()
results_pd2 = model_pd2.fit()
results_pd1.summary(), results_pd2.summary( )
start_pd1 = len(train_pd1)
end_pd1 = len(train_pd1) + len(test_pd1) - 1
start_pd2 = len(train_pd2)
end_pd2 = len( train_pd2) + len(test_pd2) - 1
Predicts_pd1 = results_pd1.predict(start_pd1,end_pd1).rename('Модель SARIMAX pd1')
ax_pd1 = train_pd1['давление '].plot(legend=True,figsize=(15,6))
прогнозирует