使用Python进行多元回归的简单预测

时间:2020-05-19 17:46:06

标签: python scikit-learn

我有一个物料清单以及与之相关的12月,1月,2月,3月的销售月份。等。是否有可能根据过去5到6个月的数据提前预测4月的销售量。我尝试使用X_train和X_test split使用sklearn的线性回归。但这可以帮助我预测模型的准确性,但我想提前预测下个月的估算值。我是Python的新手,所以每一个帮助都是有价值的。谢谢

data = pd.DataFrame({
    "Item Name": ["ABC", "XYSD", "BBDSS", "WLSA", "XABC"],
    "Oct-Sales": [0, 0, 0, 3, 2],
    "Nov-Sales": [0, 1, 1, 3, 0],
    "Dec-Sales": [0, 3, 0, 3, 3],
    "Jan-Sales": [1, 0, 0, 2, 1],
    "Feb-Sales": [0, 2, 0, 1, 1],
    "Mar-Sales": [0, 1, 0, 1, 1]
})

X_final = data[['Oct','Nov','Dec','Jan','Feb','Mar','Apr']].copy()
Y_final = data['May'].copy() 

X_train, X_test, Y_train, Y_test = train_test_split(
    X_final, Y_final, test_size = 0.33, random_state = 0)

lr = LinearRegression().fit(X_train,Y_train)

X_final_pred = lr.predict(X_final)

print(X_final_pred) 

1 个答案:

答案 0 :(得分:0)

您的代码有问题。

X_final = data[['Oct','Nov','Dec','Jan','Feb','Mar','Apr']].copy()
Y_final = data['May'].copy() 

这没有任何意义,因为Apr不能作为预测变量,因为您没有本月的数据。此外,您的May中不存在data frame。实际上,您的数据框中没有这些列。您需要将-Sales添加到密钥中。

您的问题比您想象的要难。另外,它不仅与编程问题有关。由于以下原因。

第一手,您想预测不同产品的销售额。这意味着为不同的产品训练一个模型是没有意义的,尤其是当它们来自不同的产品类别时。

第二,您似乎没有太多的培训数据。确实,您似乎没有足够的能力来捕捉季节性影响。

是否有可能根据过去5到6个月的数据提前预测4月的销售量。

当然。您可以做到。您可以尝试的模型也没有任何限制(如果我们暂时忘记训练大小)。您可以像以前那样使用决策树,随机森林或线性回归。

我尝试使用X_train和X_test split使用sklearn的线性回归。但这可以帮助我预测模型的准确性,但我想提前预测下个月的估算值。

我不知道您到底想要什么。但是,如果您问是否可以预测未来的两个时间戳,那么答案是肯定的。

使用您所有的时间戳在四月训练模型的代码是

X_final = data[['Oct-Sales','Nov-Sales','Dec-Sales','Jan-Sales','Feb-Sales']].copy()
Y_final = data['Mar-Sales'].copy() 

X_train, X_test, Y_train, Y_test = train_test_split(
    X_final, Y_final, test_size = 0.33, random_state = 0)

lr = LinearRegression().fit(X_train,Y_train)

y_pred = lr.predict(X_final)

然后您可以使用此模型对4月进行预测

X = data[['Nov-Sales','Dec-Sales','Jan-Sales','Feb-Sales', 'Mar-Sales']].copy()
y_pre_apr = lr.predict(X)

如果您要预测两个时间戳,可以这样做

X_final = data[['Oct-Sales','Nov-Sales','Dec-Sales','Jan-Sales']].copy()
Y_final = data['Mar-Sales'].copy() 

X_train, X_test, Y_train, Y_test = train_test_split(
    X_final, Y_final, test_size = 0.33, random_state = 0)

lr = LinearRegression().fit(X_train,Y_train)

y_pred = lr.predict(X_final)

# Make predictions for May
X = = data[['Dec-Sales','Jan-Sales', 'Feb-Sales', 'Mar-Sales']].copy()
y_pred_may = lr.predict(X)

但是,这是一个简单的示例,不会产生良好的结果。处理时态数据很复杂。

相关问题