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

Ориентировочная цена

Программа оценки будет использоваться для прогнозирования цены автомобиля для заданного пробега. Когда вы запускаете программу, она должна запросить у вас пробег, а затем вернуть вам ориентировочную цену за этот пробег. Программа будет использовать следующее уравнение для прогнозирования цены:

Вы можете попробовать процесс, запустив этот код. В приведенном ниже примере программа оценит стоимость автомобиля с пробегом 100 000 км.

python estimate_price.py --mileage 100000 --param_yaml param.yaml

Тренируйтесь с алгоритмом градиентного спуска

Учебная программа считывает файл набора данных и выполняет линейную регрессию по данным. После завершения линейной регрессии переменные θ0 и θ1 будут сохранены для использования в программе оценки. Процедура обучения следующая.

1. Нормализация диапазона

Если бы я использовал значения данных так, как они использовались для обучения, обучение не сходилось должным образом. Поэтому я нормализовал данные и использовал их для обучения. Я использовал масштабирование в диапазоне для нормализации данных.

Масштабирование до диапазона является хорошим выбором, когда выполняются оба следующих условия:

  • Вы знаете приблизительные верхнюю и нижнюю границы ваших данных с небольшими выбросами или без них.
  • Ваши данные примерно равномерно распределены по этому диапазону.

2. Рассчитать градиент

Минимизируемая функция стоимости выглядит следующим образом. mm — количество данных.

Уравнение, дифференцированное на каждое из θ0​ и θ1​, выглядит следующим образом.

3. Обновить параметр со скоростью обучения

Значения θ0​ и θ1​ обновляются с использованием значения скорости обучения L.

4. Рассчитайте функцию стоимости

Мы будем повторять этот процесс до тех пор, пока функция стоимости (3) не станет очень малой (в идеале 0).

5. Преобразование нормализованного значения обратно в исходное значение

Поскольку полученные значения θ0​ и θ1​ представляют собой значения в нормализованных данных, их необходимо восстановить до исходной шкалы данных.

Код здесь. Вы можете попробовать этот процесс, выполнив следующую команду.

python train.py --csv_file_path data.csv --output_param_path param.yaml

График результата ниже изображения. Это хороший график.

Рекомендации