Анализ и прогнозирование использования арендованных велосипедов в блоках данных
Использование велосипедов напрокат становится все более распространенным явлением. Я попытался использовать 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.
Ссылки: я получил помощь от этого сайта для машинного обучения.