IIS_2023_1/alexandrov_dmitrii_lab_2
2023-10-05 18:13:38 +04:00
..
lab2.py lab 2 is ready 2023-10-05 18:13:38 +04:00
readme.md lab 2 is ready 2023-10-05 18:13:38 +04:00

Задание

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

Вариант 1. Модели:

  • Линейная регрессия (LinearRegression)
  • Случайное Лассо (RandomizedLasso)
  • Рекурсивное сокращение признаков (Recursive Feature Elimination RFE)

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

Программа работает на Python 3.7, поскольку только в нём можно подключить нужную версию библиотеки scikit-learn, которая ещё содержит RandomizedLasso Файл lab2.py содержит и запускает программу, аргументов и настройки вроде не требует.

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

Файл lab2.py содержит непосредственно программу.

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

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

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

  • линейная регрессия показывает хорошие результаты, выделяет все 9 значимых признаков.
  • случайное лассо справляется хуже других моделей, иногда выделяя шумовые признаки в значимые, а значимые - в шумовые.
  • рекурсивное сокращение признаков показывает хорошие результаты, правильно правильно выделяя 9 самых значимых признаков.
  • хотя линейная регрессия и рекурсивное сокращение признаков правильно выделяют значимые признаки, саму значимость они оценивают по-разному.
  • среднее значение позволяет c хорошей уверенностью определять истинные значимые признаки.

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

Пример консольных результатов:

Linear regression

[('x1', 1.0), ('x4', 0.69), ('x2', 0.61), ('x11', 0.59), ('x3', 0.51), ('x13', 0.48), ('x5', 0.19), ('x12', 0.19), ('x14', 0.12), ('x8', 0.03), ('x6', 0.02), ('x10', 0.01), ('x7', 0.0), ('x9', 0.0)]

Random lasso

[('x5', 1.0), ('x4', 0.76), ('x2', 0.74), ('x1', 0.72), ('x14', 0.44), ('x12', 0.32), ('x11', 0.28), ('x8', 0.22), ('x6', 0.17), ('x3', 0.08), ('x7', 0.02), ('x13', 0.02), ('x9', 0.01), ('x10', 0.0)]

RFE

[('x4', 1.0), ('x1', 0.92), ('x11', 0.85), ('x2', 0.77), ('x3', 0.69), ('x13', 0.62), ('x5', 0.54), ('x12', 0.46), ('x14', 0.38), ('x8', 0.31), ('x6', 0.23), ('x10', 0.15), ('x7', 0.08), ('x9', 0.0)]

Mean

[('x1', 0.88), ('x4', 0.82), ('x2', 0.71), ('x5', 0.58), ('x11', 0.57), ('x3', 0.43), ('x13', 0.37), ('x12', 0.32), ('x14', 0.31), ('x8', 0.19), ('x6', 0.14), ('x10', 0.05), ('x7', 0.03), ('x9', 0.0)]

По данным результатам можно заключить, что наиболее влиятельные признаки по убыванию: x1, x4, x2, x5.