Python 预测并比较不同月份的数据

Python 预测并比较不同月份的数据,python,pandas,numpy,jupyter-notebook,regression,Python,Pandas,Numpy,Jupyter Notebook,Regression,我在2021年1月底结束的数据框架上进行线性回归。目标变量是月平均值,因此它将预测2月份 我在单独的数据集中有截至1月底和2月底的信息。我想在1月的数据上训练模型,然后将预测结果与2月底结束的数据帧中的数据进行比较 要执行此操作,是否需要将目标列(从2月数据帧)合并到1月数据帧,并按如下方式运行模型: january.drop('january_avg_colum', axis=1, inplace=True) df = pd.merge(january, february[['ID', 'fe

我在2021年1月底结束的数据框架上进行线性回归。目标变量是月平均值,因此它将预测2月份

我在单独的数据集中有截至1月底和2月底的信息。我想在1月的数据上训练模型,然后将预测结果与2月底结束的数据帧中的数据进行比较

要执行此操作,是否需要将目标列(从2月数据帧)合并到1月数据帧,并按如下方式运行模型:

january.drop('january_avg_colum', axis=1, inplace=True)
df = pd.merge(january, february[['ID', 'february_avg_colum']], how="inner", on=["ID", "ID"])

X = df.drop('february_avg_colum', axis=1)
y = df['february_avg_colum']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = LinearRegression().fit(X_train, y_train)

y_preds = model.predict((X_test))

print('RMSE:', metrics.mean_squared_error(y_test, y_preds, squared=False))
我需要在合并前降低一月份的平均值吗? 这是正确的方法吗?有没有更简单或更有效的方法?
非常感谢任何帮助

如果您已经知道要在1月训练数据并在2月测试,则无需拆分,您已经准备好了训练和测试数据集

如果必须微调模型的参数或测试其他模型,则可以将训练数据拆分为虚拟训练和测试数据集。然后对您的训练数据进行
train\u test\u split
,甚至更好,在没有看到2月份数据的情况下进行多次分割,并在所有这些跑步中找到最佳模型+参数(这非常重要)

这里,
LinearRegression
不带任何参数,因此不需要分割或洗牌任何内容

现在,让我向您展示您的代码的功能,以及如果我们将您想要实现的功能转换为代码,它将是什么样子:

你在这里干什么
  • 删除1月份存在的任何目标值:
  • janur.drop('janur\u info\u column',axis=1,inplace=True)
    
  • 将2月目标合并到1月功能:
  • df=pd.merge(一月、二月['ID'、'二月信息]],
    how=“inner”,on=[“ID”,“ID”])
    
  • 将此数据集拆分为80%序列/20%测试:
  • X\u系列,X\u测试,y\u系列,y\u测试=系列测试分割(X,y,测试尺寸=0.2)
    
  • 拟合并预测:
  • model=LinearRegression().fit(X\U列,y\U列)
    y_preds=模型预测((X_检验))
    
  • 打印度量
  • print('RMSE:',metrics.mean_squared_error(y_test,y_preds,squared=False))
    
    与您描述的目标相对应的是什么
  • 一月训练的特点和目标:
  • model=LinearRegression().fit(一月.drop('一月信息柱',轴=1),一月['一月信息柱')
    
  • 预测2月份的特征:
  • y_preds=model.predict(二月下旬('二月信息柱',轴=1))
    
  • 打印度量
  • print('RMSE:',metrics.mean_squared_error(二月['二月信息栏],y_preds,squared=False))
    
    所以我不需要分割数据?不,因为您已经决定了要训练哪些数据以及要预测哪些数据。我在回答的开头添加了一些解释。例如,两个数据集都有很多特性。因此,我正在探索特征选择方法。因此,我按照上述步骤探索预测目标(2月份)的最佳功能,对吗?对一月数据集的特征进行训练,然后与二月进行线性回归。也许可以使用train_test_split来提高模型性能?在实践中,该方法返回选定的_特征。我该怎么做?model=LinearRegression().fit(一月[过滤特征],一月[一月信息栏]);y_preds=model.predict(二月[过滤的_特征]);calculate_error(二月['二月信息'u column',y_preds])我建议您将此作为一个关于线性回归特征选择的新问题来问,我一定会看一看!