我正在尝试预测门票销售并收到以下错误:
TypeError: Cannot cast array data from dtype('<M8[ns]') to dtype('float64') according to the rule 'safe'
我在这里附加了我的代码。运行pred_lr = linear_reg.predict(X_all)
时似乎发生了错误。我假设我必须在某个地方更改类型?但是我不知道我到底在做什么错。
from sklearn.linear_model import LinearRegression
# Load data
event_data = pd.read_csv('event_data.csv')
# Explore data
data = pd.DataFrame(event_data)
split_date = pd.datetime(2019,3,31)
data['created'] = pd.to_datetime(data['created'])
data_train = data[data.created < split_date]
data_test = data[data.created >= split_date]
# predict prices based on date
X_train = data_train.created[:, np.newaxis]
y_train = data_train.tickets_sold
linear_reg = LinearRegression().fit(X_train, y_train)
# predict on all data
X_all = event_data.created[:, np.newaxis]
pred_lr = linear_reg.predict(X_all)
所有行here。这是我的数据头。
created event_id tickets_sold tickets_sold_sum
0 3/12/19 1 90 90
1 3/13/19 1 40 130
2 3/14/19 1 13 143
3 3/15/19 1 8 151
4 3/16/19 1 13 164
答案 0 :(得分:0)
处理datetime
值的最简单方法是将它们转换为POSIX timestamps
。
X_train = data_train.created.astype("int64").values.reshape(-1, 1) // 10**9
和
X_all = event_data.created.astype("int64").values.reshape(-1, 1) // 10**9
但是,由于测试集的POSIX时间值合理地超出了训练集中的POSIX时间值范围,因此通过这种方式,您几乎不会学到任何有用的信息来预测未来的数据。
我的建议是修改X_train
和X_all
,以便从日期起获得多种信息功能(如使用一键编码的分类功能):