【问题标题】:Python: Linear regression from Pandas df - ordinal dates conversionPython:Pandas df 的线性回归 - 序数日期转换
【发布时间】:2021-03-20 21:40:29
【问题描述】:

第一次尝试在 Python 中使用基本线性回归进行预测。发现我必须将日期转换为序数日期,然后转换为 2D numpy 数组。我现在想将 numpy 数组转换回 YYYY/MMM/DD 以获得可用的视觉图,但是失败了。以前从未使用过 numpy,因此 x_full_month.map(dt.datetime.fromordinal) 不起作用,因为在 numpy 中似乎无效。

    from sklearn.linear_model import LinearRegression
    model=LinearRegression()
    df['Date_Ordinal']=df['Date'].map(dt.datetime.toordinal)
    x=df['Date_Ordinal']
    y=df['Cost']
    x_train = x.values.reshape(-1, 1)
    y_train = y.values.reshape(-1, 1)
    y_pred = model.predict(x_train)

从预测模型中,然后我为整月创建一个新的 X 顺序日期,以获得整月的响应

    x_full_month = np.arange(737850,737880,1).reshape((-1, 1))
    y_pred_new = model.predict(x_new)
    print('predicted response:', y_pred.T, sep='\n')

这似乎有效,但是有一个序号日期 X(如预期的那样),我将如何获得一个格式良好的 X 进行绘图。或者把它放回我更熟悉的 Pandas 数组中?或者,我是否完全绕道而行?

编辑:更正参数名称

【问题讨论】:

    标签: python numpy datetime linear-regression


    【解决方案1】:

    几个小时后,我有了一个解决方案。我仍然确定我这样做的效率很低,但以下步骤对我有用。

        # .flatten converts numpy arrays into pandas df columns
        df = pd.DataFrame(y_pred.flatten(),x_full_month.flatten())  
         
        # creates a new index (as pd.Dataframe made x_full_month the index initially)
        df.reset_index(inplace=True) 
        
        # meaningful column names
        df = df.rename(columns = {'index':'ord_date',0:'cumul_DN'}) 
        
        # Convert oridinal date to yyyy-mm-dd
        df['date']=df['ord_date'].map(dt.datetime.fromordinal) 
    

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 2021-08-16
      • 1970-01-01
      • 2014-08-26
      • 2017-03-06
      • 1970-01-01
      • 2018-07-02
      • 2023-03-13
      相关资源
      最近更新 更多