Прогноз количества транспортных средств на основе данных датчиков
Предпосылка: регрессия и классификация | Машинное обучение с учителем
Датчики, размещенные на перекрестках дорог, собирают данные об отсутствии транспортных средств на разных перекрестках и передают данные диспетчеру транспорта. Теперь наша задача - спрогнозировать общее количество транспортных средств на основе данных датчиков.
В этой статье объясняется, как работать с данными датчиков, указанными с меткой времени, и прогнозировать количество автомобилей в определенное время.
Описание набора данных:
Этот набор данных содержит 2 атрибута. Это Datetime и Vehicles. Где Транспортные средства - это метка класса.
Ссылка для загрузки этих данных - нажмите здесь
Метка класса имеет числовой тип. Так что метод регрессии хорошо подходит для этой задачи. Регрессия используется для отображения данных в предопределенную функцию. Это контролируемый алгоритм обучения, который используется для прогнозирования значения на основе исторических данных. Мы можем выполнить регрессию наших данных, если они числовые. Здесь метка класса. Атрибут «Транспортные средства» - это метка класса, которая является числовой, поэтому необходимо выполнить регрессию.
Регрессор случайного леса - это метод ансамбля, который принимает входные данные и строит деревья, а затем принимает среднее значение всех деревьев на строку / на кортеж.
Syntax: RandomForestRegressor(n_estimators=100, *, criterion=’mse’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None,min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None,random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None)
Подход:
- Импортировать необходимые модули
- Загрузите набор данных
- Анализировать данные
- Преобразуйте атрибут DateTime в неделю, дни, часы, месяц и т. Д. (В формате отметки времени).
- Построить модель
- Обучите модель
- Проверить данные
- Предсказать результаты
Шаг 1: Импорт модуля pandas для загрузки фрейма данных.
Python3
# importing the pandas module for # data frame import pandas as pd # load the data set into train variable. train = pd.read_csv( 'vehicles.csv' ) # display top 5 values of data set train.head() |
Выход:
Шаг 2: Определите функции для получения месяца, дня, часов из метки времени (DateTime) и загрузите ее в разные столбцы.
Python3
# function to get all data fron time stamp # get date def get_dom(dt): return dt.day # get week day def get_weekday(dt): return dt.weekday() # get hour def get_hour(dt): return dt.hour # get year def get_year(dt): return dt.year # get month def get_month(dt): return dt.month # get year day def get_dayofyear(dt): return dt.dayofyear # get year week def get_weekofyear(dt): return dt.weekofyear train[ 'DateTime' ] = train[ 'DateTime' ]. map (pd.to_datetime) train[ 'date' ] = train[ 'DateTime' ]. map (get_dom) train[ 'weekday' ] = train[ 'DateTime' ]. map (get_weekday) train[ 'hour' ] = train[ 'DateTime' ]. map (get_hour) train[ 'month' ] = train[ 'DateTime' ]. map (get_month) train[ 'year' ] = train[ 'DateTime' ]. map (get_year) train[ 'dayofyear' ] = train[ 'DateTime' ]. map (get_dayofyear) train[ 'weekofyear' ] = train[ 'DateTime' ]. map (get_weekofyear) # display train.head() |
Выход:
Шаг 3. Разделите метку класса и сохраните в целевой переменной.
Python3
# there is no use of DateTime module # so remove it train = train.drop([ 'DateTime' ], axis = 1 ) # seperating class label for training the data train1 = train.drop([ 'Vehicles' ], axis = 1 ) # class label is stored in target target = train[ 'Vehicles' ] print (train1.head()) target.head() |
Выход:
Шаг 4. Создайте и обучите данные с помощью алгоритмов машинного обучения и спрогнозируйте результаты после тестирования.
Python3
#importing Random forest from sklearn.ensemble import RandomForestRegressor #defining the RandomForestRegressor m1 = RandomForestRegressor() m1.fit(train1,target) #testing m1.predict([[ 11 , 6 , 0 , 1 , 2015 , 11 , 2 ]]) |
Выход:
массив ([9.88021429])