Анализ и прогнозирование использования арендованных велосипедов в блоках данных

Использование велосипедов напрокат становится все более распространенным явлением. Я попытался использовать Databricks, чтобы провести анализ и угадать данные об использовании прокатного велосипеда. Я выполнял анализ данных в Python и машинное обучение в R на одном ноутбуке. Данные взяты из Kaggle. В нем есть количество используемых велосипедов в час, погодные условия, рабочий день или нет и т. д. Данные имеют 17379 строк × 17 столбцов, и данные были чистыми для анализа.

Как изменилось использование велосипеда за два года?

Чтобы ответить на этот вопрос, мне нужно было делать данные ежедневно, а не ежечасно. Затем создайте еще один набор данных с фиктивными датами, чтобы увидеть их на том же графике друг над другом. Я использовал столбец yr, чтобы различать данные.

По этому графику можно сказать, что в 2012 году прокат велосипедов был более популярен.

Как меняется использование велосипеда в рабочий или нерабочий день?

Для этого графика я использовал полоску морского побережья. Это диаграмма рассеяния, поэтому для лучшего наблюдения я уменьшил оттенок точек.

ax = sns.stripplot(x='hr', y="cnt", hue="workingday", data=df, palette="Set2", dodge=True, alpha=.5)
plt.xlabel("Hours of Day")
plt.ylabel("Bike Usage")
plt.legend(labels=['Not Work Day', 'Work Day'])

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

Как сезоны и погодные условия влияют на использование велосипеда?

Чтобы ответить на этот вопрос, я решил создать два графика для сезонов и погодных условий по отдельности. Он разделяет рабочие и нерабочие дни, как и предыдущий график.

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

Как зарегистрированные и случайные пользователи ведут себя в течение дня?

Чтобы увидеть это, я построил два разных графика по рабочим и нерабочим дням. На этот раз это барные сюжеты. Я добавляю количество использований для этого участка.

Мы видим, что в дни отпуска больше случайных пользователей.

Машинное обучение в R

В блоках данных мы можем написать код R в блокноте Python, добавив %r в начало кода. Чтобы применить машинное обучение, мне нужно было удалить мгновенные, дневные, случайные и зарегистрированные столбцы. Потому что некоторые методы, которые я использую, не принимают даты. Кроме того, если бы я включил случайные и зарегистрированные столбцы, это привело бы к утечке данных.

После этого я разделяю свои данные на обучающие и тестовые наборы данных. Затем я устанавливаю метрику и сколько раз я тренирую модели.

Наконец-то пришло время тренировать модели. Модели представляют собой линейный дискриминантный анализ (LDA), деревья классификации и регрессии (CART), k-ближайших соседей (kNN), машины опорных векторов (SVM), случайный лес (RF).

Call:
summary.resamples(object = results)
Models: lm, cart, knn, svm, rf
Number of resamples: 3
MAE
Min.   1st Qu.    Median      Mean   3rd Qu.      Max. NA's
lm   105.47286 106.05231 106.63176 106.86290 107.55792 108.48408    0
cart  94.81395  95.14542  95.47689  96.79515  97.78576 100.09462    0
knn   35.74671  36.83365  37.92058  37.23116  37.97339  38.02619    0
svm   72.53371  72.62324  72.71276  72.76463  72.88009  73.04741    0
rf    27.84059  28.14190  28.44322  28.39693  28.67511  28.90700    0
RMSE
Min.   1st Qu.    Median      Mean   3rd Qu.      Max. NA's
lm   140.69374 141.74643 142.79912 142.79651 143.84790 144.89667    0
cart 132.06960 133.04939 134.02919 136.20889 138.27853 142.52788    0
knn   56.63311  58.17783  59.72254  59.20233  60.48694  61.25133    0
svm  118.00954 118.10829 118.20704 118.24539 118.36332 118.51959    0
rf    43.10417  44.50297  45.90177  45.36018  46.48818  47.07459    0
Rsquared
Min.   1st Qu.    Median      Mean   3rd Qu.      Max. NA's
lm   0.3764308 0.3824726 0.3885143 0.3851032 0.3894395 0.3903646    0
cart 0.4039581 0.4293240 0.4546899 0.4404215 0.4586532 0.4626165    0
knn  0.8902102 0.8922465 0.8942828 0.8954359 0.8980487 0.9018147    0
svm  0.6001712 0.6044999 0.6088287 0.6071123 0.6105829 0.6123372    0
rf   0.9346007 0.9362579 0.9379151 0.9392526 0.9415786 0.9452421    0

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

Наше значение R-квадрата составляет 94 процента. С некоторыми дополнительными настройками и настройками это может стать еще лучше. Подобную модель можно использовать для прогнозирования использования велосипеда и соответствующей подготовки, рекламы и управления дорогами. Кроме того, анализ данных, как я показал в этом посте, может помочь принять решение по упомянутым темам.

Примечание. Вы можете найти код здесь и в Kaggle с отдельными блокнотами. Для части машинного обучения в R обратитесь здесь, для части анализа данных в Python обратитесь здесь. Вы можете найти меня в LinkedIn и на GitHub.

Ссылки: я получил помощь от этого сайта для машинного обучения.