Интеллектуальная система диагностирования глазных заболеваний человека
Понятие офтальмологии, виды и методы ее диагностики. Глазные заболевания и их симптомы. Применимость экспертных систем. Проектирование модели байесовской сети. Разработка инфологической модели базы данных. Руководство пользователя и тестирование системы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 13.11.2015 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
13. Розенфельд А. Симптомы: Пер. с англ. - М.: Центр общечеловеческих ценностей, 1993. - 367с.
14. Кански, Д. Клиническая офтальмология: систематизированный подход. Пер. с англ. / Д. Кански. - М.: Логосфера, 2006. - 744 с.: ил.
15. Д.И. Муромцев. Введение в технологию экспертных систем. - СПб: СПб ГУ ИТМО, 2005. - 93 с.
16. Глухих И.Н. Интеллектуальные информационные системы : учеб. Пособие для высш. проф. образования / И.Н. Глухих. - М.: Издательский центр «Академия», 2010. - 112 с.
17. Дзюбан Юрий, Болдак Людмила. Анализ алгоритмов вывода в Байесовских сетях доверия. Міжнародна конференція "Високопродуктивні обчислення" HPC-UA'2012 (Україна, Київ, 8-10 жовтня 2012 року). 167-169 с.
18. Карпов В.Н. Юдин. Методы добычи данных при построении локальной метрики в системах вывода по прецедентам
19. Хлопотов М.В. Модели и алгоритмы интеллектуального анализа образовательных данных для поддержки принятия решений [Текст]: дис. на соиск. степ. канд. тех. наук. 15.12.2014. / Горлушкина Наталья Николаевна. - Санкт-Петербург, 2014. - 127с.
20. Хлопотов М.В. Модели и алгоритмы интеллектуального анализа образовательных данных для поддержки принятия решений [Текст]: автореф. дис. на соиск. степ. канд. тех. наук. (05.13.06) / Горлушкина Наталья Николаевна; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики. - Санкт-Петербург, 2014. - 18с.
21. В. Ф. Мусина, Байесовские сети доверия как вероятностная графическая модель для оценки медицинских рисков, Тр. СПИИРАН, 2013, выпуск 24, 135-151
22. Тулупьев А.Л., Николенко С.И., Сироткин А.В. Байесовские сети: Логико-вероятностный подход. - СПб.: Наука, 2006. - 607с.
23. Концепция разработки web-приложений
24. PHP, Ruby, Python - краткая характеристика трёх языков программирования / Сайтостроение от А до Я
25. CSS / - Википедия. Свободная энциклопедия
26. HTML / - Википедия. Свободная энциклопедия
27. Денвер(программа) / - Википедия. Свободная энциклопедия
28. PhpStorm - интегрированная среда разработки на PHP / - JetBrains - продукты и разработки
29. Apache / - Википедия. Свободная энциклопедия
30. MySQL / Википедия. Свободная энциклопедия
31. Всемирный день зрения / - ПроЗрение
Приложение А
Список использованных для тестирования симптомов, факторов и диагнозов
Диагнозы:
1. Амблиопия;
2. Астигматизм;
3. Блефарит;
4. Близорукость (миопия);
5. Глаукома;
6. Дальнозоркость;
7. Катаракта;
8. Кератоконус;
9. Кератит;
10. Компьютерный зрительный синдром;
11. Конъюнктивит;
12. Макулодистрофия (ВМД);
13. Мушки в глазах;
14. Отслойка сетчатки;
15. Офтальморозацеа;
16. Птеригиум;
17. Синдром сухого глаза;
18. Халязион;
19. Химический ожог глаз;
20. Электроофтальмия;
21. Эндокринная офтальмопатия;
22. Эписклерит;
23. Ячмень (гордеолум).
Симптомы:
1. ухудшение зрения одного или обоих глаз;
2. затруднение восприятия объемных предметов и оценки расстояния до предметов, нарушение аккомодации и бинокулярного зрения;
3. искажение или размытость, искривление очертаний предметов;
4. двоение изображения;
5. быстрая утомляемость глаз (астенопия);
6. головная боль;
7. необходимость прищуриваться, чтобы лучше рассмотреть какой-либо предмет;
8. раздражение, отечность, припухлость и покраснение век;
9. раздражение глаз;
10. покраснение слизистой оболочки глазного яблока;
11. шелушение краев век, корочки на ресницах по утрам, появление пенистого секрета, патологическое отделяемое в уголках глаз;
12. ощущение инородного тела в глазу;
13. жжение;
14. зуд;
15. выпадение ресниц;
16. наличие слизистого или гнойного отделяемого;
17. сухость в глазах;
18. повышенная чувствительность к свету;
19. слезотечение;
20. боль в глазах;
21. дискомфорт;
22. резь в глазах;
23. боли в области лба, висков, глазниц;
24. ухудшение периферического зрения;
25. «тёмное», непрозрачное пятно в поле зрения;
26. затуманивание зрения;
27. значительное ухудшение зрения в темное время суток;
28. колебания остроты зрения;
29. «радужные круги» перед глазами при взгляде на яркий свет;
30. амблиопия или косоглазие;
31. прогрессирующее снижение остроты зрения;
32. снижение способности различать цвета;
33. затруднения при чтении;
34. появление ореолов вокруг ярких источников света;
35. нарушение блеска и гладкости поверхности роговицы;
36. блефароспазм (судорожное сжатие век);
37. уменьшение зрительной работоспособности;
38. чувство песка под веками;
39. плавающие в поле зрения помутнения в виде пятен, нитей, мушек, которые лучше всего видны на светлом фоне и при хорошем освещении;
40. появление молний и искр в глазах, темной пелены;
41. перхоть на ресницах, жирные чешуйки у корня ресниц;
42. периодические ячмени и халазионы, блефарит, рецидивирующие инфекции глаз;
43. боль при закапывании индифферентных глазных капель;
44. образование красного или серого пятна на обратной поверхности века;
45. ретракция (подтянутость кверху) века или экзофтальм (выступание глазного яблока впереди), ограничение глазных движений;
46. чувство сдавливания;
47. хемоз (отек конъюнктивы);
48. прозрачное отделяемое из конъюнктивальной полости;
49. повышение температуры тела, общее недомогание.
Факторы:
1. возраст с 9 до 40;
2. возраст после 40;
3. возраст после 55;
4. у ближайших родственников имеются проблемы с глазами;
5. долгое время проводится перед компьютером, планшетом, мобильным телефоном;
6. долгое время проводится в запылённой (задымлённой, ветреной) окружающей среде;
7. имеются заболевания щитовидки;
8. имеется сахарный диабет;
9. имеются аллергические заболевания;
10. имеется сильная близорукость или дальнозоркость;
11. курение;
12. интенсивный источник света, воздействие ультрафиолета;
13. стафилококковая инфекция.
Приложение Б
Код программы
Entity.php
<?php
abstract class Entity{
protected $id;
protected $name;
protected $prior;
protected $patiens;
function __construct($id, $name) {
$this->id = $id;
$this->name = $name;
}
function setPrior($prior){
$this->prior = $prior;
}
function setPatiens($patiens){
$this->patiens = $patiens;
}
function getId() {
return $this->id;
}
function getName() {
return $this->name;
}
function getPrior() {
return $this->prior;
}
function getPatiens() {
return $this->patiens;
}
function addPatien(){}
}
Diagnosis.php
<?php
include_once "entity.php";
class Diagnosis extends Entity{
protected $post;
protected $description;
protected $symptoms = array();
protected $factors = array();
function __construct($id, $name, $prior, $patiens, $description) {
parent::__construct($id, $name, $prior, $patiens);
$this->prior = $prior;
$this->patiens = $patiens;
$this->description = $description;
$this->post = 0;
}
public function setPost($post) {
$this->post = $post;
}
public function setSymptoms($symptoms) {
$this->symptoms = $symptoms;
}
public function setFactors($factors) {
$this->factors = $factors;
}
function getPost() {
return $this->post;
}
function getDescription() {
return $this->description;
}
function getSymptoms() {
return $this->symptoms;
}
function getFactors() {
return $this->factors;
}
function addSymptom($symptom){
$this->symptoms[$symptom->getId()] = $symptom;
}
function addFactor($factor){
$this->factors[$factor->getId()] = $factor;
}
function addPatien($sumpatiens) {
$this->patiens +=1;
$this->prior = $this->patiens / ($sumpatiens + 1);
}
function getExistSymptoms() {
$s = $this->getSymptoms();
$count = 0;
foreach ($s as $i => $sim) {
if ($sim->getExist()) {
$count++;
}
}
return $count;
}
}
?>
Entityinfluence.php
<?php
include_once "entity.php";
class EntityInfluence extends Entity{
protected $exist;
function __construct($id, $name) {
parent::__construct($id, $name);
$this->exist = false;
}
function setExist($exist){
$this->exist = $exist;
}
function getExist(){
return $this->exist;
}
}
?>
Symptom.php
<?php
include_once "entityinfluence.php";
class Symptom extends EntityInfluence{
protected $non_prior;
protected $countpatiens; //количество больных с симптомом вне зависимости от диагноза
function __construct($id, $name, $countpatiens) {
parent::__construct($id, $name);
$this->countpatiens = $countpatiens;
}
function setNon_prior($non_prior){
$this->non_prior = $non_prior;
}
function getNon_prior(){
return $this->non_prior;
}
function addPatien($d, $sums) {
$this->patiens += 1;
$this->non_prior = ($this->countpatiens - $this->patiens) / $sums;
$this->prior = $this->patiens / ($d->patiens + 1);
}
}
?>
Factor.php
<?php
include_once "entityinfluence.php";
class Factor extends EntityInfluence{
function addPatien($d, $pf) {
$this->patiens += 1;
$this->prior = (($this->patiens / ($pf + 1)) / count($d->getFactors()) ) * (1 - $d->getPrior());
}
}
?>
Begin_diagnosis.php
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Опрос и сбор жалоб</title>
<link href="style.css" rel="stylesheet">
</head>
<body>
<?php
include_once "menu.php";
include_once "get_from_bd.php";
include_once("class\symptom.php");
include_once("class\\factor.php");
$symptoms_array = getSymptoms(); ?>
<form method="get" action="end_diagnost.php">
<p>Выберите симптомы:</p>
<?php
foreach ($symptoms_array as $id => $s) { ?>
<input type="checkbox" name="<?php echo $id; ?>" value="symptom"><?php echo $s->getName(); ?><br>
<?php }
$factors_array = getFactors(); ?>
<p>Выберите факторы:</p>
<?php foreach ($factors_array as $id => $f) { ?>
<input type="checkbox" name="<?php echo ($id+1000); /*помни об этом */ ?>" value="factor"><?php echo $f->getName();?><br>
<?php } ?>
<input type="submit">
</form>
</body>
</html>
End_diagnosis.php
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Список вероятных диагнозов</title>
<link href="style.css" rel="stylesheet">
</head>
<body>
<?php
include_once "menu.php";
include_once "calculate_probability.php";
function mySortDiagnosis($d1,$d2)
{
if($d1->getPrior() > $d2->getPrior()) return -1;
elseif($d1->getPrior() < $d2->getPrior()) return 1;
else return 0;
}
$symptoms_array = getSymptoms();
$factors_array = getFactors();
foreach ($_GET as $id => $type) {
switch($type) {
case 'symptom':
$symptoms_array[$id]->setExist(true);
break;
case 'factor':
$id -= 1000; //помни об этом
$factors_array[$id]->setExist(true);
break;
default:
echo "Здесь творится что-то непонятное";
}
} ?>
<form method="get" action="selected_symptoms_and_factors.php">
<p>Выбранные симптомы:</p>
<ul>
<?php
foreach ($symptoms_array as $s) {
if ($s->getExist())
echo "<li>".$s->getName()."</li><br>";
} ?>
</ul>
<p>Выбранные факторы:</p>
<ul>
<?php
foreach ($factors_array as $f) {
if ($f->getExist())
echo "<li>".$f->getName()."</li><br>";
}?>
</ul>
</form>
<?php
$diagnosis_array = getDiagnosises($symptoms_array, $factors_array);
//обработаем массив диагнозов, убрав те диагнозы, в которых нет заявленных симптомов
$count = count($diagnosis_array);
for ($i = 1; $i <= $count; $i++) {
if ($diagnosis_array[$i]->getExistSymptoms() == 0) {
unset($diagnosis_array[$i]);
}
else {
if ($diagnosis_array[$i]->getExistSymptoms()/count($diagnosis_array[$i]->getSymptoms()) < 0.2) {
unset($diagnosis_array[$i]);
}
}
}
set_time_limit(300);
foreach ($diagnosis_array as $d) {
$df = 0;
foreach ($d->getFactors() as $f) {
if ($f->getExist()) {
$df += $f->getPrior();
}
}
$d->setPrior($d->getPrior() + $df);
$p = calculate_post($d);
$d->setPost($p);
} ?>
<ol>
<?php
uasort($diagnosis_array,"mySortDiagnosis");
foreach ($diagnosis_array as $d) {
echo '<b>'.$d->getName().'</b> (с вероятностью '.number_format($d->getPost()*100,2).'%)<br>'.$d->getDescription(); ?>
<ul> Симптомы, которые могут появиться:
<?php
foreach($d->getSymptoms() as $s) {
echo '<li>'.$s->getName();
echo '</li>';
} ?>
</ul>
<ul> <?php
$a = $d->getFactors();
if (!empty($a))
echo 'Факторы, усиливающие влияние болезни:';
foreach($a as $f) {
echo '<li>'.$f->getName();
echo '</li>';
} ?>
</ul>
</li>
<!-- Для добавления в БД -->
<form method="post" action="add_diagnosis.php">
<?php foreach ($symptoms_array as $s) {
if ($s->getExist())
echo "<input type='hidden' name='".$s->getId()."' value='symptom' hidden>";
}
foreach ($factors_array as $f) {
if ($f->getExist())
echo "<input type='hidden' name='".($f->getId()+1000)."' value='factor' hidden>";
}
echo "<input name='diagnosis' value='".$d->getId()."' hidden>";
if ($_COOKIE['type'] == 1) {
echo '<input type="submit" value="Добавить диагноз в таблицу">';
} ?>
</form>
<?php //if ($filtr > 4) break;
} ?>
</ol>
</body>
</html>
Calculate_probability.php
<?php
include_once "get_from_bd.php";
function calculate_probability($d, $mas, $masnum, &$masmn){
$pmult = 1;
$pmulf = 1;
$i = 1;
foreach($d->getSymptoms() as $id => $s) {
if ($mas[$i][2] == 1) {
$pmult *= $s->getPrior();
$pmulf *= $s->getNon_prior();
}
else {
$pmult *= 1 - $s->getPrior();
$pmulf *= 1 - $s->getNon_prior();
}
$i++;
}
$pmult *= $d->getPrior();
$pmulf *= (1 - $d->getPrior());
return array(0 => $pmulf, 1 =>$pmult);
}
function get_mas_num($d){
$mas_num = array();
$s = $d->getSymptoms();
foreach($s as $id => $simp) {
$mas_num[$id] = ($simp->getExist()) ? 1 : 0;
}
return $mas_num;
}
function calculate_post($d){
$mas_num = get_mas_num($d);
$mas = array();
$mas_d_tf = array(1 => 0, 1 => 0);
$i = 1;
foreach ($d->getSymptoms() as $id => $s){
$mas[$i] = array (1 => $id, 2 => 0);
$i = $i+1;
}
$masmn = false;
calculate_post_probability_rec($d, 1, $mas, $mas_num, $mas_d_tf, $masmn);
$p = $mas_d_tf;
return $p[1] * $d->getPrior() / ($p[1] * $d->getPrior() + $p[0] * (1 - $d->getPrior()));
}
function calculate_post_probability_rec($d, $k, $mas, $mas_num, &$mas_d_tf, &$masmn){
$count = count($mas_num);
if ($k > $count) {
$res = calculate_probability($d, $mas, $mas_num, $masmn);
return $res;
}
else {
for($i = $k; $i <= $count; $i++) {
if($mas_num[$mas[$i][1]] == 1) {
$mas[$i][2] = 1;
$res = calculate_post_probability_rec($d, $k+1, $mas, $mas_num, $mas_d_tf, $masmn);
}
else {
for ($j = 0; $j < 2; $j++) {
$mas[$i][2] = j;
$res = calculate_post_probability_rec($d, $k+1, $mas, $mas_num, $mas_d_tf, $masmn);
}
}
if (!empty($res)) {
$mas_d_tf[0] += $res[0];
$mas_d_tf[1] += $res[1];
}
}
}
}
?
Размещено на Allbest.ru
Подобные документы
Ограничения, присутствующие в предметной области. Проектирование инфологической модели данных. Описание основных сущностей и их атрибутов. Логический и физический уровни модели данных. Реализация базы данных: представления, триггеры, хранимые процедуры.
курсовая работа [1,7 M], добавлен 10.02.2013Разработка информационно-аналитической системы агентства недвижимости. Обоснование выбора архитектуры базы данных и СУБД. Моделирование потоков данных (DFD диаграмм). Проектирование инфологической модели данных с использованием модели "сущность-связь".
дипломная работа [5,4 M], добавлен 06.06.2013Семантическое моделирование данных. Основные понятия модели Entity-Relationship. Построение инфологической модели в виде диаграммы "Таблица-связь". Проектирование физической модели базы данных. Разработка формы заставки, главной, вторичных кнопочных форм.
курсовая работа [1,5 M], добавлен 26.06.2012Базовые принципы правового регулирования трудовых отношений. Проектирование автоматизированной информационной системы "Отдел кадров", программная реализация, тестирование. Состав базы данных, методы анализа надежности системы, руководство пользователя.
дипломная работа [3,6 M], добавлен 11.03.2010Пример экспертной системы с использованием метода Криса-Нейлора. Структура базы данных. Стратегия вывода результатов выбора страны. Руководство пользователя, редактирование базы знаний. Режим тестирования, его завершение, блок объяснения решения.
контрольная работа [1,6 M], добавлен 29.12.2012Особенности разработки инфологической модели и создание структуры реляционной базы данных. Основы проектирования базы данных. Разработка таблиц, форм, запросов для вывода информации о соответствующей модели. Работа с базами данных и их объектами.
курсовая работа [981,4 K], добавлен 05.11.2011Концептуальное и инфологическое проектирование базы данных в системе управления базами данных Microsoft Access. Физическое проектирование базы данных "Магазин спорттоваров". Тестирование и отладка базы данных, составление руководства пользователя.
курсовая работа [6,7 M], добавлен 22.11.2022Составление схемы концептуальной модели данных. Разработка структуры реляционной базы данных и интерфейса пользователя. Особенности главных этапов проектирования базы данных. Способы реализации запросов и отчетов. Специфика руководства пользователя.
курсовая работа [186,9 K], добавлен 18.12.2010Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.
курсовая работа [3,7 M], добавлен 04.12.2014Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.
курсовая работа [867,9 K], добавлен 16.07.2013