pan*_*Box 13 python statsmodels
我正在研究逻辑回归模型,我无法理解如何将模型拟合从我的训练集到我的测试集.对不起,我是python的新手,也是statsmodels的新手.
import pandas as pd
import statsmodels.api as sm
from sklearn import cross_validation
independent_vars = phy_train.columns[3:]
X_train, X_test, y_train, y_test = cross_validation.train_test_split(phy_train[independent_vars], phy_train['target'], test_size=0.3, random_state=0)
X_train = pd.DataFrame(X_train)
X_train.columns = independent_vars
X_test = pd.DataFrame(X_test)
X_test.columns = independent_vars
y_train = pd.DataFrame(y_train)
y_train.columns = ['target']
y_test = pd.DataFrame(y_test)
y_test.columns = ['target']
logit = sm.Logit(y_train,X_train[subset],missing='drop')
result = logit.fit()
print result.summary()
y_pred = logit.predict(X_test[subset])
Run Code Online (Sandbox Code Playgroud)
从最后一行,我得到这个错误:
y_pred = logit.predict(X_test [subset])Traceback(最近一次调用last):File"C:\ Users\eMachine\WinPython-64bit-2.7.5.3\python-2.7.5"中的文件"",第1行. amd64\lib\site-packages\statsmodels\discrete\discrete_model.py",第378行,在预测中返回self.cdf(np.dot(exog,params))ValueError:矩阵未对齐
我的训练和测试数据集具有相同数量的变量,所以我确信我误解了logit.predict()实际上在做什么.
Jos*_*sef 18
有两种预测方法.
logit在您的示例中是模型实例.模型实例不知道估计结果.模型预测具有不同的签名,因为它也需要参数logit.predict(params, exog).这主要用于内部使用.
你想要的是结果实例的预测方法.在你的例子中
y_pred = result.predict(X_test[subset])
应该给出正确的结果.它使用解释变量的新测试数据X_test来使用预测中的估计参数.
调用model.fit()返回结果类的实例,该实例类提供对其他估计后统计和分析以及预测的访问.