Python 设置回归设计矩阵的格式

Python 设置回归设计矩阵的格式,python,patsy,Python,Patsy,我得到了一个没有响应变量的测试集。我已经建立了模型,需要在测试集中预测响应变量 我在格式化测试设计矩阵以使其兼容时遇到问题 我正在使用patsy库构建矩阵 我想做类似的事情,但下面的代码不起作用: X = dmatrices('Response ~ var1 + var2', test, return_type = 'dataframe') 什么是正确的方法?谢谢如果您首先使用patsy来拟合模型,那么您应该告诉它“嘿,您知道您是如何构建我的第一个设计矩阵的吗?以同样的方式构建另一个矩阵”:

我得到了一个没有响应变量的测试集。我已经建立了模型,需要在测试集中预测响应变量

我在格式化测试设计矩阵以使其兼容时遇到问题

我正在使用patsy库构建矩阵

我想做类似的事情,但下面的代码不起作用:

X = dmatrices('Response ~ var1 + var2', test, return_type = 'dataframe')

什么是正确的方法?谢谢

如果您首先使用patsy来拟合模型,那么您应该告诉它“嘿,您知道您是如何构建我的第一个设计矩阵的吗?以同样的方式构建另一个矩阵”:

或者,您可以从头开始构建新矩阵:

# Use 'dmatrix' and leave out the left-hand-side of the formula
test_X = dmatrix("~ ...", test, return_type="dataframe")
如果你能做到,第一种方法会更好。例如,假设您有一个分类变量,让patsy为您编码。假设有10个类别出现在您的培训集中,但只有5个类别出现在您的测试集中。如果使用第一种方法,那么patsy将记住10个类别在哪里,并生成一个包含10列的测试矩阵(其中一些列全部为零)。如果您使用第二种方法,那么patsy将生成一个包含10列的训练矩阵和一个包含5列的测试矩阵,然后您的模型代码可能会崩溃,因为矩阵不是它期望的形状


另一种情况是,如果您使用patsy的
center
函数将变量居中:使用第一种方法,它将自动记住从训练数据中减去的值,并将其重新用于测试数据,这正是您想要的。使用第二种方法,它将使用测试数据重新计算中心,这可能会导致您默默地得到非常错误的结果。

谢谢!这很有帮助
# Use 'dmatrix' and leave out the left-hand-side of the formula
test_X = dmatrix("~ ...", test, return_type="dataframe")