IIS_2023_1/alexandrov_dmitrii_lab_6/readme.md

5.5 KiB
Raw Blame History

Задание

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

Вариант 1: MLPClassifier

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

Запуск программы

Файл lab6.py содержит и запускает программу, аргументов и настройки вроде не требует.

Описание программы

Программа считывает цены на жильё как выходные данные и следующие данные как входные: год размещения объявления, площадь, этаж, количество этажей, год постройки, количество комнат, материал, расстояние до кремля (условного центра). Далее она обрабатывает данные (цифровизирует нулевые данные), оставляет только год объявления. Цены распределяются по пяти классам.

После обработки программа делит данные на 99% обучающего материала и 1% тестового. Эти данные обрабатываются по 10 раз для идентичных моделей нейронных сетей, использующих метод градиентного спуска "adam", с разной настройкой максимального количества поколений: 200, 400, 600, 800, 1000. Считаются оценка модели. Для каждой модели запоминаются минимальный, максимальный и средний результаты. В консоль выводятся все результаты. В конце программа показывает графики зависимости результатов от максимального количества поколений модели.

Результаты тестирования

По результатам тестирования, можно сказать следующее:

  • В общем, модель даёт средний результат в районе 40-50% точности, что недостаточно.
  • Увеличение максимального количества поколений влияет сильнее всего на минимальные оценки, сужая разброс точности.
  • Нельзя сказать, что увеличение максимального количества поколений сильно улучшит модель: максимум на 10% точности.

Пример консольного вывода:

Testing iterations number 200:

res1: 0.3806228373702422

res2: 0.6055363321799307

res3: 0.4809688581314879

res4: 0.4913494809688581

res5: 0.4844290657439446

res6: 0.2975778546712803

res7: 0.48788927335640137

res8: 0.06228373702422145

res9: 0.6193771626297578

res10: 0.47750865051903113

Medium result: 0.4387543252595155

Testing iterations number 400:

res1: 0.6124567474048442

res2: 0.4290657439446367

res3: 0.3217993079584775

res4: 0.5467128027681661

res5: 0.48788927335640137

res6: 0.40484429065743943

res7: 0.6020761245674741

res8: 0.4186851211072664

res9: 0.42214532871972316

res10: 0.370242214532872

Medium result: 0.46159169550173

Testing iterations number 600:

res1: 0.4359861591695502

res2: 0.2560553633217993

res3: 0.5363321799307958

res4: 0.5778546712802768

res5: 0.35986159169550175

res6: 0.356401384083045

res7: 0.49480968858131485

res8: 0.5121107266435986

res9: 0.5224913494809689

res10: 0.5190311418685121

Medium result: 0.4570934256055363

Testing iterations number 800:

res1: 0.25951557093425603

res2: 0.4083044982698962

res3: 0.5224913494809689

res4: 0.5986159169550173

res5: 0.24567474048442905

res6: 0.4013840830449827

res7: 0.21453287197231835

res8: 0.4671280276816609

res9: 0.40484429065743943

res10: 0.38408304498269896

Medium result: 0.3906574394463667

Testing iterations number 1000:

res1: 0.4186851211072664

res2: 0.5017301038062284

res3: 0.5121107266435986

res4: 0.3806228373702422

res5: 0.44982698961937717

res6: 0.5986159169550173

res7: 0.5570934256055363

res8: 0.4290657439446367

res9: 0.32525951557093424

res10: 0.41522491349480967

Medium result: 0.4588235294117647

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