如何解决预测和比较不同月份的数据
我正在对结束于 2021 年 1 月的数据框进行线性回归。目标变量是月平均值,因此它将预测 2 月。
我在不同的数据集中有 1 月底和 2 月底结束的信息。我想用 1 月的数据训练模型,然后将预测结果与 2 月底结束的数据帧的数据进行比较。
对于我来说,我是否需要将目标列(从二月数据框)合并到一月数据框并像这样运行模型:
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 月份的平均值? 这是解决这个问题的正确方法吗?有没有更简单或更有效的方法? 非常感谢任何帮助!
解决方法
如果您已经知道要在 1 月训练数据并在 2 月测试,那么不需要拆分,您已经准备好训练和测试数据集。
如果您必须微调模型的参数或测试其他模型,您可能希望将训练数据拆分为虚拟训练和测试数据集。那么对你的训练数据做一个 train_test_split
会很有用,或者更好,做几次分割并在所有这些运行中找到最好的模型+参数,仍然没有看到二月的数据(这是非常重要)。
此处,LinearRegression
无需任何参数即可工作,因此实际上没有必要拆分或混洗任何内容。
现在让我向您展示您的代码做了什么,然后如果我们将您想要实现的目标转化为代码,它会是什么样子:
你在这里做什么
- 删除一月份的任何目标值:
january.drop('january_info_colum',axis=1,inplace=True)
- 将 2 月目标与 1 月功能合并:
df = pd.merge(january,february[['ID','february_info_colum']],how="inner",on=["ID","ID"])
- 在 80% 的训练/20% 的测试中拆分此数据集:
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 月份的功能和目标进行训练:
model = LinearRegression().fit(january.drop('january_info_colum',axis=1),january['january_info_colum'])
- 预测 2 月份的特征:
y_preds = model.predict(february.drop('february_info_colum',axis=1))
- 打印指标
print('RMSE:',metrics.mean_squared_error(february['february_info_colum'],squared=False))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。