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

Я начал проект по машинному обучению, который изначально должен был стать завершающим проектом моей аспирантуры, но этой весной я решил сменить факультативы на последний семестр. Я работаю над этим с таким же рвением и дисциплиной, но не стремлюсь получить оценку «зачет/незачет» в стенограмме.

Я влюбился в мой последний завершенный курс по машинному обучению, особенно после того, как нам пришлось с нуля кодировать блокнот Jupyter, чтобы сравнить модели прогнозирования, которые мы создали для съедобности грибов. Так как я закончила занятия на две недели раньше, я хотела начать изучать личный проект, связанный с бизнесом, которым я владею совместно с моим мужем: Mobius Guitars. Он занимается ручной сборкой и сборкой, а я занимаюсь 3D-моделированием для создания файлов ЧПУ и файлов .svg, чтобы немного упростить его процесс.

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

Эквивалентом электронной торговой площадки для подержанных гитар является reverb.com. Поэтому я поставил перед собой задачу сделать что-то подобное. Честно говоря, я не компьютерщик. Я только что научился печатать hello world менее года назад. Но я подумал, что если погуглить и погуглить на ютубе, то смогу это понять.

Хорошо. Я сделал и не сделал.

Вот что я узнал:

  • Красивый суп - это чертовски круто.
  • Всегда сначала проверяйте robots.txt веб-сайта, чтобы убедиться, что вы не делаете ничего плохого.
  • Элементы HTML не так уж сложны для чтения и понимания.
  • Парсинг динамических веб-сайтов, используя только Beautiful Soup и Python, действительно сложен и выходит за рамки моих возможностей. Мне нужно научиться использовать селен и стать лучшим программистом, если я хочу автоматизировать этот процесс.

Но мне все же удалось заставить его работать — правда, он не настолько автоматизирован, как хотелось бы, и код немного корявый. На Reverb выставлено на продажу более 70 000 бывших в употреблении электрогитар, но моя цель — собрать набор данных из 1000 строк.

Пришлось разбирать по частям:

  • Сначала мне удалось найти в Интернете список одной гитары, чтобы получить название, цену и список характеристик, и поместить их в фрейм данных.
  • Мой второй шаг состоял в том, чтобы просмотреть страницы списков и посмотреть, можно ли их очистить, чтобы создать список ссылок, которые затем будут удалены из Интернета.
  • Я сделал это, за исключением того, что он извлек ссылки и данные для всего, что было в списках «популярных продуктов» в самом верху страницы, и ничего не извлек из сетки списков на странице, на которую, как мне казалось, я ориентировался.
  • Я изменил свой план и решил выяснить, как заставить мой веб-скребок для отдельных списков просто объединять данные в файле .csv.
  • Я потратил около часа на очистку страниц по отдельности и мне удалось получить около 200 беспорядочных строк.

  • НЕКОТОРЫХ УСПЕХОВ! (Я похлопаю себя по спине за то, что научил себя зайти так далеко)

Это эффективно? Нет. Является ли это демонстрацией моей чистой решимости решить проблему? Да. Должен ли я научиться парсить динамические веб-сайты? Да. Есть ли у меня сейчас время? Нет.

Я горжусь этим первым шагом, который мне удалось сделать в обучении веб-скрейпингу.

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