线性回归-预测ŷ

时间:2018-11-10 10:17:50

标签: python linear-regression statsmodels predict

我正在尝试绘制实际销售额(y)和预期销售额(ŷ)的散点图。

我已经导入了csv文件,目前用于线性回归模型的代码是:

result = smf.ols('sales ~ discount + holiday + product', data=data).fit()
print(result.summary())

既然我只有实际的销售值,那么如何找到预测的销售(ŷ)值来绘制散点图?我尝试研究,发现lm.predict()result.predict()。有区别吗? lm = LinearRegression() 预先谢谢你!

1 个答案:

答案 0 :(得分:0)

没有数据很难提供帮助,但是我想您有来自数据集的Xy,因为您想执行线性回归。您可以使用scikit-learn将数据分为训练集和测试集:

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3)

然后,您需要将线性回归拟合到训练集:

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)

然后预测测试集结果:

y_pred = regressor.predict(X_test)

最后,您可以绘制测试或培训结果:

# Visualising the Training set results
plt.scatter(X_train, y_train, color = 'red')
plt.plot(X_train, regressor.predict(X_train), color = 'blue')
plt.title('Discount vs Sales (Training set)')
plt.xlabel('Discount percentage')
plt.ylabel('Sales')
plt.show()

# Visualising the Test set results
plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_train, regressor.predict(X_train), color = 'blue')
plt.title('Discount vs Sales (Test set)')
plt.xlabel('Discount percentage')
plt.ylabel('Sales')
plt.show()

(在这种情况下,如果我们设置特定的值(例如,折扣百分比),我们希望预测会有多少销售)。如果您有多个X参数,则情况会更加复杂,您将需要使用虚拟变量,进行统计分析等。