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_trainy_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-机器学习-线性回归

Python:使用 Statsmodels 预测 y 值 - 线性回归

机器学习之路: python 线性回归LinearRegression, 随机参数回归SGDRegressor 预测波士顿房价

使用 python 进行线性回归的简单预测

机器学习之路:python线性回归分类器 进行良恶性肿瘤分类预测