5.5 KiB
Задание
Использовать нейронную сеть по варианту для выбранных данных по варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной вами задачи.
Вариант 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" показала себя не лучшим образом. Возможно, другие методы могут выдать лучшие результаты, либо необходима более обширная модификация модели.