python中按日期的线性回归预测
Posted
技术标签:
【中文标题】python中按日期的线性回归预测【英文标题】:Linear Regression prediction by Date in python 【发布时间】:2019-03-30 12:46:15 【问题描述】:我已将日期转换为数值,但我被困在下一步如何准备数据以进行预测,如何在 python 代码中使用日期进行预测?如何计算 eventhappen 属性请指导我并在没有任何意义的地方改进我的代码。下面是我的代码
#Here is Dataset
date Eventhappen
2016-01-14 A
2016-01-15 C
2016-01-16 B
2016-01-17 A
2016-01-18 C
2016-02-18 B
#Converting Date into Numerical Value
df['Dispatch_Date_Time'] = pd.to_datetime(df['Dispatch_Date_Time'])
df.set_index('Dispatch_Date_Time', inplace=True)
df.sort_index(inplace=True)
df['month'] = df.index.month
df['year'] = df.index.year
df['day'] = df.index.day
df['eventhappen'] = 1
#Preparing the data
X = df[['year']]
y = df['eventhappen']
#Trainng the Algorithm
regressor = LinearRegression()
regressor.fit(X_train, y_train)
#Making the Predictions
y_pred = regressor.predict(X_test)
#Plotting the Least Square Line
sns.pairplot(df, x_vars=['year'], y_vars='eventhappen', size=7, aspect=0.7, kind='reg')
【问题讨论】:
你想在这里建模什么?由此看来,您似乎要将一列 1 与日期列的年份进行回归,尽管因为X_train
和 y_train
没有在任何地方定义,所以甚至没有。
我建议将日期转换为“自 2016 年 1 月 14 日以来的天数”,因为这会给模型提供数字数据。
ALollz 抱歉,这里缺少培训代码,请留在这里,请关注我的问题
【参考方案1】:
至少对我来说,您的代码中有很多混乱。处理中使用的列名不同。您需要考虑两种情况:
SN-A :如果您想预测未来某个日期发生的事件,目标列“Eventhappen”将是分类的,您有一个多分类任务而不是回归任务,因此您应该对您的目标列,然后使用训练/测试拆分拆分您的数据集,最后实现一个分类器来预测未来某个日期的事件。
SN-B :如果您想预测未来某个日期发生的事件数量,那么您的方法是正确的,您应该有一个数字列来预测哪个是计数。这意味着这行代码不应该是一个常量:
df['eventhappen'] = 1
拥有它后,您应该考虑一些时间序列技术(功率转换、滞后...),然后拆分为训练/测试数据集,最后实现/评估您的回归模型。
使用此函数从日期列中提取所需的特征,然后直接在您的机器学习模型中使用它们。您还可以对循环特征进行编码,从而使模型能够从数据中提取循环洞察。
def transform_col_date(data, date_col):
'''
data : Dataframe (Your dataset).
date_col : String (name of the date column)
'''
data_ = data.copy()
data_.reset_index(inplace=True)
data_[date_col] = pd.to_datetime(data_[date_col], infer_datetime_format = True)
data_['day'] = data_[date_col].dt.day
data_['month'] = data_[date_col].dt.month
data_['dayofweek'] = data_[date_col].dt.dayofweek
data_['dayofyear'] = data_[date_col].dt.dayofyear
data_['quarter'] = data_[date_col].dt.quarter
data_['weekofyear'] = data_[date_col].dt.weekofyear
data_['year'] = data_[date_col].dt.year
return data_
#in your case
data = transform_col_date(df, 'date')
【讨论】:
以上是关于python中按日期的线性回归预测的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 python 中使用数据集中的变量计数以日期作为预测变量来运行线性回归?
Python:使用 Statsmodels 预测 y 值 - 线性回归
机器学习之路: python 线性回归LinearRegression, 随机参数回归SGDRegressor 预测波士顿房价