当每个季节有不同的模型时预测价格
Posted
技术标签:
【中文标题】当每个季节有不同的模型时预测价格【英文标题】:predicting price when each season has different model 【发布时间】:2021-01-29 12:27:31 【问题描述】:我有一个包含许多列的数据集:
有 4 个变量用于预测: -season(总和,aut,win,spr) -express_shipment(真,假) -shipping_distance(公里) -first_time_customer (true, false)
这 4 个变量用于计算 shipping_price,规则如下: 对于每个季节,都有一个使用上述变量的单独模型。
我使用了一种方法,将 True 转换为 1,将 False 转换为 0 对于 2 个布尔列 我还将季节转换为整数表示 (1,2,3,4)
问题是我的预测非常不准确,这是我正在使用的代码
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
modeling = data.loc[:,["shipping_distance","season_int","new_cust_int","express_shipment","shipping_charge"]]
x =modeling.iloc[:,:-1]
y =modeling.iloc[:,-1:]
X_train, X_test, y_train, y_test = train_test_split(x,y, random_state = 1)
model = LinearRegression()
model.fit(X_train, y_train)
model.predict(X_test)
有没有人能解释一下解决这个问题的正确方法是什么,以及如何解决?
【问题讨论】:
r2_score 的结果有多糟糕? 【参考方案1】:可能的答案:
您正在使用分类变量进行线性回归,这可能是个问题。 Here 是可能的解决方案。 LinearRegression 可能不是解决您的问题的最佳模型,因为您的问题可能不是线性的。试试非线性模型,例如sklearn.ensemble.RandomForestRegressor
。
对于您要解决的问题,您的数据集可能不够有价值。这些变量可能不是确定价格等的最佳变量。
您没有足够的数据来训练您的模型。
【讨论】:
【参考方案2】:您似乎想要一个时间序列模型 [是吗?]https://www.statsmodels.org/stable/examples/index.html#time-series-analysis
【讨论】:
【参考方案3】:在这里,您将标签编码器用于“season_int”(1,2,3,4) 和线性回归。这意味着你为这个模型分配了一些内在的顺序“season_int”。您可以为“season_int”尝试一种热编码:
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html
【讨论】:
以上是关于当每个季节有不同的模型时预测价格的主要内容,如果未能解决你的问题,请参考以下文章