Python:statsmodels-.predict(X)实际预测什么?

时间:2019-12-11 20:50:28

标签: python statsmodels

我对model.predict(X)行的实际预测有点困惑。我用Google搜索找不到任何东西。

import statsmodels.api as sm

# Step 1) Load data into dataframe 
df = pd.read_csv('my_data.csv')

# Step 2) Separate dependent and independent variables 

X = df['independent_variable']
y = df["dependent_variable"]

# Step 3) using OLS -fit a linear regression
model = sm.OLS(y, X).fit()
predictions = model.predict(X) # make predictions
predictions

我不确定predictions正在显示什么?它是在预测下一个 x 行的数量吗?我不只是传递我的自变量吗?

3 个答案:

答案 0 :(得分:1)

您正在从数据中拟合OLS模型,该数据很可能被解释为数组。 def has_ext(filepath): _, ext = os.path.splitext(filepath) return len(ext) > 0 方法将返回给定训练模型的拟合值数组。

换句话说,来自predict documentation

  

从设计矩阵返回线性预测值。

答案 1 :(得分:1)

类似于sk-learn。在model = sm.OLS(y, X).fit()之后,您将得到一个模型,然后predictions = model.predict(X)不会预测出x的行数,而它将从您的X中预测出训练数据集。使用普通最小二乘法的模型将是“ x”的函数,输出应为:

$$ \ hat {y} = f(x)$$

如果要预测新的X,则需要将X分成trainingtesting数据集。

答案 2 :(得分:1)

实际上您做错了

预测方法用于预测下一个值

将依存值和I依存值分开后

您可以将数据分为两个部分进行训练和测试

从sklearn.model_selection导入train_test_split X_train,X_test,Y_train,Y_test = train_test_split(X,Y,0.2)

这将使X_train仅具有自变量即可占总数据的80%

然后您可以将y_test放入预测方法中,以检查模型的效果如何