Анализ реадмиссии пациентов на основе логистической регрессии

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 10.06.2017
Размер файла 625,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Penalty = l2, tol = 0.0001

Penalty = l1, tol = 0.0001

Penalty = l1, tol = 0.001

Penalty = l2, tol = 0.01 - cтаким набором параметров модель дает наилучший результат. Точность 0,85.

Penalty = l2, tol = 0.001

Рисунок 7. Кросс-валидация для логистической регрессии

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

3.4 Оценка качества работы классификаторов

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

На графике слева направо представлен результат работы всех классификаторов (см.рис.8):

Наинвыйбаесовский классификатор - точность 0,28

Метод ближайших соседей - точность 0,79

Метод случайного леса - точность 0,83.

Логистическая регрессия - точность 0,85

Рисунок 8. Кросс-валидация для всех классификаторов

Таким образом, по результатам проведенной кросс-валидации наилучшим методом является логистическая регрессия. Низкий результат точности классификатора наивный Баесовский классификатор может быть обусловлен размером выборки и количеством параметров, так как данный метод в основном хорошо работает только на маленьких выборках.

Помимо метода кросс-валидации для проверки качества классификатора используются ROC-кривые - графики, показывающие соотношение неправильно определенных позитивных случаев к корректно определенным позитивным случаям (flasepositiverateи truepositiverate). В связи с тем, что в данной выборке целевая переменная принимает больше, чем два значения, то необходимо строить ROC-кривую для каждого из значений целевой переменной, а потом представлять на графике среднее для всех значений зависимого параметра. Данный алгоритм реализуется следующим образом:

target = diabetic_data.readmitted - определяем целевую переменную

# Binarizetheoutput - представляем значения целевой переменной в бинарном виде

target = label_binarize(target, classes=[0, 1, 2])

n_classes = target.shape[1]

fori in range (n_classes): -запускаемциклдлякаждогозначенияцелевойпеременной

fpr[i], tpr[i], _= roc_curve([Применениеклассификатора][:,i], y_score[:, i])

roc_auc[i] = auc(fpr[i], tpr[i])

Результат работы данного алгоритма представлен ниже (см. рис.9):

Рисунок 9. ROC-кривые для классификаторов

Таким образом, и в анализе через ROC-кривые наилучшим образом себя показала именно логистическая регрессия. В связи с этим именно данный классификатор будет использоваться для предсказания целевой переменной.

Прежде, чем начать реализацию интерфейса для конечного пользователя, необходимо проверить и интерпретировать результат работы выбранного классификатора. Первым шагом, получаем коэффициенты линейной регрессии, далее необходимо провести интерпретацию полученных результатов, а также проверить значимость полученных коэффициентов с помощью t-статистики.В случае, если полученное значение статистики больше, чем табличное значение, то коэффициенты признаются значимыми. В данном случае все коэффициенты признаны статистически значимыми, так как значение t-статистики больше, чем (уровень значимости 0,01, степени свободы = 101470 (n-k-1)). Данные представлены в таблице 3 (синим выделены положительные коэффициенты, красным - отрицательные)

Таблица 3. Коэффициенты логистической регрессии

Параметр

Коэффициент

t-статистика

Интерпретация

Отделение

+0.00164492

7,44529

Слабая степень влияния. Пациенты, поступившие в кардиологическое отделение и отделение эндокринологии наиболее склонны к ухудшению состояния.

Пол

+ 0.02195529

5,98426

Мужчины более склонны к ухудшению состояния

Количество дней в госпитале

+0.00883695

8,991112

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

Заключение по визиту

+0.00937918

9,424847

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

Тест на глюкозу

+0.03859679

7,542266

Чем выше показатели теста на глюкозу, тем выше вероятность реадмиссии.

Вторичный диагноз

+0.07319994

12,02284

Аналогично первичному диагнозу существует прямая зависимость.

Количество препаратов

+0.08079777

12,551719

Большое количество назначенных препаратов говорит о вероятности реадмиссии. Может быть обусловлено тем, что человек в более плохом изначальном состоянии принимает большое количество лекарств, а не самим фактом назначения большого количества медикаментов.

Количество посещений до этого визита

+0.08866531

9,491827

В случае если пациент часто обращается в больницу, вероятность реадмиссии выше.

Возраст

+0.13933213

8,225969

Чем старше человек, тем больше вероятность реадмисии.

Первичный диагноз

+0.14479666

6,783833

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

Тест HbA1c

+0.81238387

11,538118

Чем выше показатели HbA1c, тем выше вероятность возвращения к ухудшенному состоянию. Степень влияния показателя высокая.

Раса

-0.06573962

10,986301

Европеоиды более склонны к ухудшению состояния

Изменение в принимаемых лекарствах

-0.09270197

5,295517

В случае корректировки принимаемых лекарств, вероятность реадмиссии меньше.

Количество других процедур

-0.10109088

7,705122

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

Количество лабораторных тестов

-0.2510888

10,850467

Чем больше тестов сделано пациенту, тем меньше вероятность реадмиссии.

Тип поступления

-0.32507527

9,300183

Если человек поступил в экстренном случае, то вероятность ухудшения более велика.

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

Таким образом, наиболее весомыми факторами, влияющими на возможную реадмиссию являются пол, возраст, тип поступления в госпиталь, количество проведенных лабораторных тестов и процедур, первичный диагноз, а также результаты теста HbA1C. Последние три показателя прямо говорят о том, что тщательный подход к лечению больного может благоприятно сказаться на его состоянии после завершения лечения. Однако, несмотря на то, что остальные показатели оказывают не такое сильное влияние на целевую переменную, в интерфейсе пользователю необходимо вести все эти значения, для более точной работы модели. Более того, все полученные коэффициенты регрессии являются статистически значимыми, что доказывают показатели t-статистики каждого параметра.

3.5 Интерфейс пользователя

Интерфейс пользователя выглядит следующим образом (см. рис.10):

Рисунок 10. Интерфейс пользователя

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

Введенные значения проверяются на корректность - выполняется проверка на соответствие типу данных (текстовый, числовой и т.д.) и на заполнение всех необходимых полей, также существует ограничение на длину символов, а именно:

Раса - выпадающий список, недоступно ввести собственное значение

Пол - необходимо обязательно поставить галочку в одно из полей

Возраст - числовое поле, не более 100 лет

Тип поступления - выпадающий список, недоступно ввести собственное значение

Заключение - выпадающий список, недоступно ввести собственное значение

Дней в госпитале - числовое поле

Отделение - выпадающий список, недоступно ввести собственное значение

Кол-во тестов - числовое значение

Кол-во процедур - числовое значение

Кол-во препаратов - числовое значение

Кол-во посещений до - числовое значение

Первичный диагноз - выпадающий список, недоступно ввести собственное значение

Вторичный диагноз - выпадающий список, недоступно ввести собственное значение

Тест на глюкозу - числовое значение

Тест HbA1c - числовое значение

Обязательные отметки на препараты

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

После того, как пользователь ввел все данные и нажал кнопку «ОК», программа записывает все полученные значения в массив и выдает результат с помощью функции test.return= model_lr_5.fit([Массив_Данных]). Было проведено несколько тестов программы, во всех случаях выдавался логичный результат по реадмисии.

Например, для следующих значений (см. Таблицу 4) результат реадмиссии =2, то есть ожидается возвращение больного в период меньше 30 дней.

Таблица 4. Данные для теста программы

Поле

Значение

race

AfricanAmerican

gender

1

age

45

admission_type_id

1

discharge_disposition_id

1

time_in_hospital

9

num_lab_procedures

47

num_procedures

2

num_medications

17

number_outpatient

0

diag_1

Болезни эндокринной системы

diag_2

Болезни системы кровообращения

number_diagnoses

9

max_glu_serum

0

A1Cresult

0

metformin

1

repaglinide

1

nateglinide

1

chlorpropamide

1

glimepiride

1

acetohexamide

1

glipizide

1

glyburide

1

tolbutamide

1

pioglitazone

1

acarbose

1

miglitol

1

troglitazone

1

tolazamide

1

examide

1

citoglipton

1

insulin

1

glyburide-metformin

1

glipizide-metformin

1

glimepiride-pioglitazone

1

metformin-rosiglitazone

1

metformin-pioglitazone

1

change

0

Полученный результат совпадает с ожидаемым, так как вторичным диагнозом больного является заболевание системы кровообращения, для него не проводился тест HbA1c, он принимает большое количество лекарств, среди которых есть глипизид и пиоглитазон, что говорит о высокой вероятности реадмиссии.Также были рассмотрены еще два примера классификации на основе разработанной модели. Во втором случае (см. Приложение 1) программа предсказывает результат реадмиссии 2, что также является наиболее плохим случаем (возвращение менее чем через 30 дней). Данный результат является валидным, так как наиболее значимые показатели указывают на то, что пациент действительно находится в группе риска -возрастная группа пациента (50-60 лет), мужской пол, болезни системы кровообращения, относительно небольшое количество проведенных процедур, наличие множества заболеваний и диагнозов, отсутствие проведения теста HbA1c, прием лекарств с побочными эффектами. В последнем же случае (см. Приложение 2), пациент находится вне зоны риска, что и предсказывается моделью в качестве значения реадмиссии 0 - молодой возраст пациента, сопутствующие заболевания, не оказывающие влияние на течение диабета, раса, менее всего предрасположенная к осложнениям, большое количество проведенных процедур, корректное назначение лекарств, а также проведение теста HbA1C. При дальнейшем тестировании и валидации результатов работы программы некорректности в предсказывании показателя реадмиссии также обнаружено не было.

Таким образом, полученная модель позволяет в большинстве случаев корректно предсказывать факт реадмиссии на основе данных, вводимых конечным пользователем через интерфейс.

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

Заключение

В ходе данной работы была выполнено построение моделей с помощью нескольких алгоритмов классификации методов машинного обучения. В качестве инструментальных методов реализации поставленной задачи был выбран программный продукт PyCharm, представляющий собой среду разработки на языке программирования Python. В данной программе был проведен первоначальный анализ данных с помощью методов boxplot, позволяющий выявить выбросы выборки, а также такие показатели, как минимальное и максимальное значение, медиана; и анализа ANOVA, позволяющего вычислить зависимости и корреляции между переменными начального dataset. Для создания модели использовались наиболее подходящие классификаторы с оптимальными для данной выборки параметрами - метод рандомного леса, k-ближайщих соседей, наивный Баесовский классификатор и логистическая регрессия. Далее была проведена оценка точности работы классификаторов с помощью методов скользящего контроля (кросс-валидация) и ROC-кривых, наилучшим образом себя показала логистическая регрессия, поэтому именно она была выбрана для дальнейшего построения модели. После разработки модели были выявлены значимые показатели, влияющие на целевую переменную - реадмиссия зависит отпервичного диагноза пациента, его пола, возраста, количества проведенных лабараторных испытаний, а также от назначенных лекарств, а именно глипизида и пиоглитазона. Для удобства конечных пользователей программы в среде разработкиQtDesigner был разработан интерфейс пользователя, позволяющий предсказать реадмиссию для каждого нового пациента.В качестве дальнейших перспектив развития данной работы может быть рассмотрена рекомендательная модель для медицинских учреждений, позволяющая подобрать оптимальное лечение для каждого конкретного пациента.Рекомендательная модель включает в себя потенциал учета большого количества внешних факторов, влияющих на возможность применения рекомендуемых методов лечения (бюджетные средства, особенности географической области применения, доступность необходимых лекарственных средств и др.), а также непосредственно возможность подбирать для каждого пациента индивидуальную программу лечения.

Список литературы.

Российская организация борьбы с диабетом.URL: http://www.dialand.ru/, дата обращения 23.02.2017

Материал для журнала "Клинико-лабораторный консилиум" № 3-2009, URL: http://www.analytica.ru/news.php?id=103 , дата обращения 24.02.2017

Всемирная организация здравоохранения. URL: http://www.who.int/diabetes/ru/, дата обращения 18.02.2017

Глобальное комьюнити по диабету. URL: http://www.diabetes.co.uk/what-is-hba1c.html, дата обращения 16.04.2017

И. И. Никберг, И. А. Чайковский, М. С. Ахманов. Лечение диабета в XXI веке. Реальность, мифы, перспективы. -- СПб.: Вектор, 2011

Тюкавкина Н.А., Бауков Ю.И. Биоорганическая химия.-- М.: Медицина, 1985.-- 480 с.

Различия сахарного диабета, I и II типа (по Этцвиллеру, 1987)

David B. Sacks. Measurement of hemoglobinA1c. A new twist on the path to harmony. Diebates Care 35(12): 2674-2680, 2012

Miedema K. Standardization of HbA1c and optimal range of monitoring. Scand J Clin Lab Invest Suppl 240: 61-72, 2005

Mogens Lytken Larsen, Mogens Hшrder and Erik F. Mogensen. Effect of long-term monitoring of glycosylated hemoglobin levels in insulin-dependent diabetes mellitus. NEnglJMed 323(15):1021-1025, 1990

J. Ross Quinlan. C4.5: Programs for Machine learning. MorganKaufmannPublishers 1993

Лагутин М. Б. Наглядная математическая статистика. (Том 2, стр. 174) -- М.: П-центр, 2003.

S.Murthy. Automatic construction of decision trees from data - A Multi-disciplinary survey, 1997

Загоруйко Н.Г. Прикладные методы анализа данных и значний. Новосибирск: ИМ СО РАН, 1999

Журавлев Ю.И. и пр. Математические методы. Программная система. Практические применения. - М.: Фазис, 2006

Валик В.Н., Червоненкис А.Я. Теория распознования образов - М.: Наука, 1974.

Trevor Hastie, Robert Tibshirani and Jerome H. Friedman. The elements of statistical learning - Stanford: Springer, 2009

Воронцов К. В. Комбинаторный подход к оценке качества обучаемых алгоритмов. -- Математические вопросы кибернетики / Под ред. О. Б. Лупанов. -- М.: Физматлит, 2004. -- T. 13. -- С. 5-36.

Hand, David J. Measuring classifier performance: A coherent alternative to the area under the ROC curve, Machine Learning, 77: 103--123, 2009

Сайт языка программирования python. URL: https://www.python.org/ , дата обращения 08.05.2017

Сайт программного продукта PyCharm. URL: https://www.jetbrains.com/pycharm/ , дата обращения 08.05.2017

Сайт программного продукта QtDesigner. URL: https://www.qt.io/ide/ , дата обращения 08.05.2017

Кодировка ICD9. URL: http://icd9.chrisendres.com/, дата обращения 16.04.2017

Breiman, Leo (2001). Random forests. Machine Learning 45 (1): 5-32

Altman, N. S. (1992). An introduction to kernel and nearest-neighbor nonparametric regression. The American Statistician. 46 (3): 175-185.

Greene, William H. (2012). Econometric analysis (Seventh ed.). Boston: PearsonEducation. pp. 803-807.

Приложение 1

Данные для теста программы, значение реадмиссии 2

Поле

Значение

race

Caucasian

gender

1

age

6

admission_type_id

2

discharge_disposition_id

1

time_in_hospital

3

num_lab_procedures

31

num_procedures

6

num_medications

16

number_outpatient

0

diag_1

болезни кровообращения

diag_2

болезни кровообращения

number_diagnoses

9

max_glu_serum

0

A1Cresult

0

metformin

1

repaglinide

1

nateglinide

1

chlorpropamide

1

glimepiride

1

acetohexamide

1

glipizide

1

glyburide

1

tolbutamide

1

pioglitazone

1

acarbose

1

miglitol

1

troglitazone

1

tolazamide

1

examide

1

citoglipton

1

insulin

1

glyburide-metformin

2

glipizide-metformin

1

glimepiride-pioglitazone

1

metformin-rosiglitazone

1

metformin-pioglitazone

1

change

1

Приложение 2

Данные для теста программы, значение реадмиссии 0.

Поле

Значение

race

Hispanic

gender

0

age

3

admission_type_id

6

discharge_disposition_id

1

time_in_hospital

6

num_lab_procedures

75

num_procedures

2

num_medications

19

number_outpatient

0

diag_1

болезни органов дыхания

diag_2

болезни эндокринной системы

number_diagnoses

6

max_glu_serum

0

A1Cresult

1

metformin

1

repaglinide

1

nateglinide

1

chlorpropamide

1

glimepiride

1

acetohexamide

1

glipizide

0

glyburide

1

tolbutamide

1

pioglitazone

1

acarbose

1

miglitol

1

troglitazone

1

tolazamide

1

examide

1

citoglipton

1

insulin

1

glyburide-metformin

1

glipizide-metformin

1

glimepiride-pioglitazone

1

metformin-rosiglitazone

1

metformin-pioglitazone

1

change

0

Приложение 3

Код программы на языке Python

import csv

import pandas

import pylabas pl

import matplotlib.pyplotas mtb

from pandas import DataFrame, Series

import sklearn

from itertoolsimport izip

from sklearn.preprocessingimport LabelEncoder

import numpyas np

import re

from sklearnimport cross_validation, svm

from sklearn.neighborsimport KNeighborsClassifier

from sklearn.ensembleimport RandomForestClassifier

from sklearn.linear_modelimport LogisticRegression

from sklearnimport metrics

from sklearn.naive_bayesimport GaussianNB

from sklearn.metricsimport roc_curve, auc

import pylabas pl

#BoxPlot

import pandas

import matplotlib.pyplot as plt

diabetic_data = pandas.read_csv('C:/nominal_diabetic.csv',',')

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#ANOVA

import pandas

import scipy.statsas st

diabetic_data = pandas.read_csv('C:/data.csv',',')

target = diabetic_data.readmitted

train = diabetic_data.drop(['weight','payer_code','patient_nbr','encounter_id','diag_3','rosiglitazon','readmitted'],axis=1)

kfold = 5

itog_val ={}

model_knc_1 = KNeighborsClassifier(n_neighbors= 19)

scores = cross_validation.cross_val_score(model_knc_1, train, target, cv = kfold)

itog_val['KNeighborsClassifier1'] = scores.mean()

DataFrame.from_dict(data = itog_val, orient='index').plot(kind='bar', legend=False)

#

pl.show()

#

pl.clf()

pl.figure(figsize=(8,6))

#print diabetic_data.head()

#diabetic_data_1=pandas.get_dummies(diabetic_data, columns=[])

kfold = 5

itog_val ={}

# model_rfc = RandomForestClassifier(n_estimators = 50)

# model_rfc_1 = RandomForestClassifier(n_estimators = 10)

# model_rfc_2 = RandomForestClassifier(n_estimators = 2)

# model_rfc_3 = RandomForestClassifier(n_estimators = 30)

model_rfc_4 = RandomForestClassifier(n_estimators= 80)

# model_rfc_5 = RandomForestClassifier(n_estimators = 150)

model_knc_1 = KNeighborsClassifier(n_neighbors= 19)

model_lr = LogisticRegression(penalty='l2', tol=0.0001,multi_class='ovr')

model_lr_1 = LogisticRegression(penalty='l1', tol=0.0001)

model_lr_2 = LogisticRegression(penalty='l1', tol=0.001)

model_lr_3 = LogisticRegression(penalty='l2', tol=0.001,multi_class='ovr')

model_lr_4 = LogisticRegression(penalty='l2', tol=0.1,multi_class='ovr')

model_lr_5 = LogisticRegression(penalty='l2', tol=0.01,multi_class='ovr')

#model_svc = svm.SVC()

model_naiv = GaussianNB()

# Binarize the output

target = label_binarize(target, classes=[0, 1, 2])

n_classes = target.shape[1]

#

# print target

ROCtrainTRN, ROCtestTRN, ROCtrainTRG, ROCtestTRG = cross_validation.train_test_split(train, target, test_size=0.25, random_state=0)

#model =model_lr_5.fit(ROCtrainTRN, ROCtrainTRG).coef_

#print model

#

classifier = OneVsRestClassifier(RandomForestClassifier(n_estimators=80))

y_score = classifier.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

# plt.figure()

'''print y_score'''

lw=2

# Random Forest

fpr = dict()

tpr = dict()

roc_auc = dict()

for i in range (n_classes):

fpr[i], tpr[i], _= roc_curve(ROCtestTRG[:,i], y_score[:, i])

roc_auc[i] = auc(fpr[i], tpr[i])

plt.plot(fpr[2], tpr[2], lw=lw, label='Random Forest (area = %0.2f)' % roc_auc[2])

#KNeighborsClassifier

classifier = OneVsRestClassifier(KNeighborsClassifier(n_neighbors= 19))

y_score = classifier.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

fpr = dict()

tpr = dict()

roc_auc = dict()

for i in range (n_classes):

fpr[i], tpr[i], _= roc_curve(ROCtestTRG[:,i], y_score[:, i])

roc_auc[i] = auc(fpr[i], tpr[i])

plt.plot(fpr[2], tpr[2], lw=lw, label='K-neighbors (area = %0.2f)' % roc_auc[2])

#LogisticRegression

classifier = OneVsRestClassifier(LogisticRegression(penalty='l2', tol=0.01,multi_class='ovr'))

y_score = classifier.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

fpr = dict()

tpr = dict()

roc_auc = dict()

for i in range (n_classes):

fpr[i], tpr[i], _= roc_curve(ROCtestTRG[:,i], y_score[:, i])

roc_auc[i] = auc(fpr[i], tpr[i])

plt.plot(fpr[2], tpr[2], lw=lw, label='Logistic Regression (area = %0.2f)' % roc_auc[2])

#naivBaes

classifier = OneVsRestClassifier(GaussianNB())

y_score = classifier.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

fpr = dict()

tpr = dict()

roc_auc = dict()

for i in range (n_classes):

fpr[i], tpr[i], _= roc_curve(ROCtestTRG[:,i], y_score[:, i])

roc_auc[i] = auc(fpr[i], tpr[i])

plt.plot(fpr[2], tpr[2], lw=lw, label='NaivBaes (area = %0.2f)' % roc_auc[2])

#SVC

# classifier = OneVsRestClassifier(svm.SVC())

# y_score = classifier.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

# fpr = dict()

# tpr = dict()

# roc_auc = dict()

# for i in range (n_classes):

# fpr[i], tpr[i], _= roc_curve(ROCtestTRG[:,i], y_score[:, i])

# roc_auc[i] = auc(fpr[i], tpr[i])

# plt.plot(fpr[2], tpr[2], lw=lw, label='SVC (area = %0.2f)' % roc_auc[2])

# Compute micro-average ROC curve and ROC area

'''fpr["micro"], tpr["micro"], _ = roc_curve(ROCtestTRG.ravel(), y_score.ravel())

roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])'''

#plot a ROC curve

lw = 2

'''plt.plot(fpr[2], tpr[2], color='darkorange',

lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[2])'''

plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')

plt.xlim([0.0, 1.0])

plt.ylim([0.0, 1.05])

plt.xlabel('False Positive Rate')

plt.ylabel('True Positive Rate')

plt.title('Receiver operating characteristic example')

plt.legend(loc="lower right")

plt.show()

# First aggregate all false positive rates

#

# scores = cross_validation.cross_val_score(model_rfc, train, target, cv = kfold)

# itog_val['0RandomForestClassifier'] = scores.mean()

#

# scores = cross_validation.cross_val_score(model_knc_1, train, target, cv = kfold)

# itog_val['KNeighborsClassifier1'] = scores.mean()

#PARAMETERS FOR RANDOM FOREST

# scores = cross_validation.cross_val_score(model_rfc, train, target, cv = kfold)

# itog_val['model_rfc'] = scores.mean()

# scores = cross_validation.cross_val_score(model_rfc_1, train, target, cv = kfold)

# itog_val['model_rfc_1'] = scores.mean()

# scores = cross_validation.cross_val_score(model_rfc_2, train, target, cv = kfold)

# itog_val['model_rfc_2'] = scores.mean()

# scores = cross_validation.cross_val_score(model_rfc_3, train, target, cv = kfold)

# itog_val['model_rfc_3'] = scores.mean()

scores = cross_validation.cross_val_score(model_rfc_4, train, target, cv = kfold)

itog_val['model_rfc_4'] = scores.mean()

# scores = cross_validation.cross_val_score(model_rfc_5, train, target, cv = kfold)

# itog_val['model_rfc_5'] = scores.mean()

#PARAMETERS FOR LOGISTIC REGRESSION

# scores = cross_validation.cross_val_score(model_lr, train, target, cv = kfold)

# itog_val['model_lr'] = scores.mean()

# scores = cross_validation.cross_val_score(model_lr_1, train, target, cv = kfold)

# itog_val['model_lr_1'] = scores.mean()

# scores = cross_validation.cross_val_score(model_lr_2, train, target, cv = kfold)

# itog_val['model_lr_2'] = scores.mean()

# scores = cross_validation.cross_val_score(model_lr_3, train, target, cv = kfold)

# itog_val['model_lr_3'] = scores.mean()

# scores = cross_validation.cross_val_score(model_lr_4, train, target, cv = kfold)

# itog_val['model_lr_4'] = scores.mean()

# scores = cross_validation.cross_val_score(model_lr_5, train, target, cv = kfold)

# itog_val['model_lr_5'] = scores.mean()

# scores = cross_validation.cross_val_score(model_svc, train, target, cv = kfold)

# itog_val['SVC'] = scores.mean()

# scores = cross_validation.cross_val_score(model_naiv, train, target, cv = kfold)

# itog_val['naiv'] = scores.mean()

# #

# DataFrame.from_dict(data = itog_val, orient='index').plot(kind='bar', legend=False)

# #

# pl.show()

# #

# pl.clf()

# pl.figure(figsize=(8,6))

'''#SVC

model_svc.probability = True

probas = model_svc.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

fpr, tpr, thresholds = roc_curve(ROCtestTRG, probas[:, 1])

roc_auc = auc(fpr, tpr)

pl.plot(fpr, tpr, label='%s ROC (area = %0.2f)' % ('SVC', roc_auc))'''

#RandomForestClassifier

# probas = model_rfc.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

# fpr, tpr, thresholds = roc_curve(ROCtestTRG, probas[:, 1])

# roc_auc = auc(fpr, tpr)

# pl.plot(fpr, tpr, label='%s ROC (area = %0.2f)' % ('RandonForest',roc_auc))

# #KNeighborsClassifier

# probas = model_knc_1.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

# fpr, tpr, thresholds = roc_curve(ROCtestTRG, probas[:, 1])

# roc_auc = auc(fpr, tpr)

# pl.plot(fpr, tpr, label='%s ROC (area = %0.2f)' % ('KNeighborsClassifier',roc_auc))

# #LogisticRegression

# probas = model_lr.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

# fpr, tpr, thresholds = roc_curve(ROCtestTRG, probas[:, 1])

# roc_auc = auc(fpr, tpr)

# pl.plot(fpr, tpr, label='%s ROC (area = %0.2f)' % ('LogisticRegression',roc_auc))

# #naivBaes

# probas = model_naiv.fit(ROCtrainTRN, ROCtrainTRG).predict_proba(ROCtestTRN)

# fpr, tpr, thresholds = roc_curve(ROCtestTRG, probas[:, 1])

# roc_auc = auc(fpr, tpr)

# pl.plot(fpr, tpr, label='%s ROC (area = %0.2f)' % ('NaivBaes',roc_auc))

pl.plot([0, 2], [0, 2], 'k--')

pl.xlim([0.0, 2.0])

pl.ylim([0.0, 2.0])

pl.xlabel('False Positive Rate')

pl.ylabel('True Positive Rate')

pl.legend(loc=0, fontsize='small')

pl.show()

Размещено на Allbest.ru


Подобные документы

  • Создание логической модели данных. Назначение кнопок Erwin Toolbox. Создание БД в СУБД InterBase. Использование утилиты WISQL. Создание Script-файла. Перенос структуры данных с одного сервера на другой. Синхронизация каталога БД и текущей модели.

    курсовая работа [4,6 M], добавлен 26.11.2011

  • ERwin как средство разработки структуры базы данных. Внешний вид диалогового окна Entity Edition. Общий вид модели после создания сущностей. Вид логической модели после создания связей. Диалоговое окно New Key Group, окончательный вид логической модели.

    лабораторная работа [559,0 K], добавлен 16.07.2013

  • Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.

    дипломная работа [1,8 M], добавлен 08.02.2017

  • Анализ матрицы коэффициентов парной корреляции. Выбор факторных признаков для построения двухфакторной регрессионной модели. Оценка параметров регрессии по методу наименьших квадратов. Нахождение определителей матриц. Применение инструмента Регрессия.

    контрольная работа [1,0 M], добавлен 13.01.2013

  • Проектирование базы данных для учета поступления пациентов и проведенного лечения, ведение архива выписанных пациентов. Определение требований поддержки целостности данных. Тестирование программы и руководство пользователю. Листинг программных модулей.

    курсовая работа [3,3 M], добавлен 28.04.2014

  • Использование систем моделирования. Повышение технического уровня и качества выпускаемой продукции. Классификация видов контроля. Активный и пассивный контроль. Создание модели, которая бы демонстрировала работу токаря в течение одной рабочей смены.

    курсовая работа [341,6 K], добавлен 08.06.2015

  • Проект базы данных "Карточка амбулаторного больного", которая должна включать в себя данные о больных и об их заболеваниях. Выбор технических и программных средств. Разработка программного приложения по обработке данных и формированию выходных документов.

    курсовая работа [1,3 M], добавлен 06.12.2011

  • Сущность базы данных. Процесс построения концептуальной модели. Построение реляционной модели, создание ключевого поля. Процесс нормализации. Проектирование базы данных в ACCESS. Порядок создание базы данных. Создание SQL запросов и работа в базе данных.

    курсовая работа [185,6 K], добавлен 08.11.2008

  • Создание структуры интеллектуального анализа данных. Дерево решений. Характеристики кластера, определение групп объектов или событий. Линейная и логистическая регрессии. Правила ассоциативных решений. Алгоритм Байеса. Анализ с помощью нейронной сети.

    контрольная работа [2,0 M], добавлен 13.06.2014

  • Разработка автоматизированной информационной системы предприятия на основе баз данных, которая обеспечивает качественный контроль данных, автоматизацию документооборота, быстрое составление отчетов. Создание форм, отчетов и макросов, меню базы данных.

    курсовая работа [4,8 M], добавлен 20.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.