I am trying to transform data for use in regression, most likely the Ridge or Lasso technique implemented in sklearn.linear_model
.
My training data contains time stamps , which I believe may have predictive power. The time stamps reflect the time that a user placed an order for pizza. Here is an example:
Edit: Including labels in field elapsed_time
, which is in seconds.
import pandas as pd
import sklearn.linear_model as linear_model
delivery_data = {
'order_time' : ['2018-09-12 21:43:08', '2018-09-13 06:33:04', '2018-09-13 09:12:18'],
'price' : [34.54, 8.63, 21.24],
'miles' : [6, 3, 7],
'home_type' : ['apartment', 'house', 'apartment'],
'elapsed_time' : [2023, 1610, 1918]
}
df = pd.DataFrame(delivery_data)
df['order_time'] = pd.to_datetime(df['order_time'])
The resulting DataFrame looks like this:
order_time price miles home_type elapsed_time
0 2018-09-12 21:43:08 34.54 6 apartment 2023
1 2018-09-13 06:33:04 8.63 3 house 1610
2 2018-09-13 09:12:18 21.24 7 apartment 1918
I am trying to predict the time to deliver pizza (elapsed_time) given timestamp, quantitative, and categorical data.
I suspect that time of day is predictive but that date is less predictive.
So far, I am considering extracting only the hour from the time stamp. In this example, order_time
would become [21, 6, 9]. My first concern is that 23:59 has an hour of 23 and 00:01 has an hour of 0. The two values are far apart, even though the order times are two minutes apart.
Is there a better way to transform this datetime
data?
Does it make a difference that the dataset contains other quantitative data (price, miles_from_store) and categorical data (home_type)?
elapsed_time
, which reports time in seconds. $\endgroup$pipeline
for doing all the preprocessing tasks. It really speeds things up, and is a very straightforward syntax (use themake_pipeline
function fromsklearn.pipeline
. $\endgroup$order_time
data? Does my idea to extract the hour only have any merit? $\endgroup$