为什么在使用 statsmodels 预测测试值时会收到此 numpy 错误?
Why do I receive this numpy error when using statsmodels to predict test values?
我在尝试使用 statsmodels .predict 来预测我的测试值时遇到错误。
代码:
X_train, X_test, y_train, y_test = train_test_split(X_new_np, y, test_size=0.2, random_state=42)
logit = sm.Logit(y_train, X_train)
reg = logit.fit_regularized(start_params=None, method='l1_cvxopt_cp', maxiter= 1000, full_output=1, disp=1, callback=None, alpha=.01, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=0.0001, qc_tol=0.03)
reg.summary()
y_pred_test = logit.predict(X_test)
错误:
ValueError: shapes (1000,61) and (251,61) not aligned: 61 (dim 1) != 251 (dim 0)
您根本没有根据正确的对象进行预测。 reg
是装的,那你就用reg.predict
。下面的代码运行没有错误(我使用了你的 fit_regularized 参数)。
from sklearn.model_selection import train_test_split
import numpy as np
from statsmodels.api import Logit
x = np.random.randn(100,50)
y = np.random.randint(0,2,100).astype(bool)
print(x.shape, y.shape)
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=.2)
logit = Logit(y_train, X_train)
reg = logit.fit_regularized(start_params=None, method='l1_cvxopt_cp',
maxiter= 1000, full_output=1, disp=1, callback=None,
alpha=.01, trim_mode='auto', auto_trim_tol=0.01,
size_trim_tol=0.0001, qc_tol=0.03)
print(reg.summary())
y_pred_test = reg.predict(X_test)
我在尝试使用 statsmodels .predict 来预测我的测试值时遇到错误。
代码:
X_train, X_test, y_train, y_test = train_test_split(X_new_np, y, test_size=0.2, random_state=42)
logit = sm.Logit(y_train, X_train)
reg = logit.fit_regularized(start_params=None, method='l1_cvxopt_cp', maxiter= 1000, full_output=1, disp=1, callback=None, alpha=.01, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=0.0001, qc_tol=0.03)
reg.summary()
y_pred_test = logit.predict(X_test)
错误:
ValueError: shapes (1000,61) and (251,61) not aligned: 61 (dim 1) != 251 (dim 0)
您根本没有根据正确的对象进行预测。 reg
是装的,那你就用reg.predict
。下面的代码运行没有错误(我使用了你的 fit_regularized 参数)。
from sklearn.model_selection import train_test_split
import numpy as np
from statsmodels.api import Logit
x = np.random.randn(100,50)
y = np.random.randint(0,2,100).astype(bool)
print(x.shape, y.shape)
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=.2)
logit = Logit(y_train, X_train)
reg = logit.fit_regularized(start_params=None, method='l1_cvxopt_cp',
maxiter= 1000, full_output=1, disp=1, callback=None,
alpha=.01, trim_mode='auto', auto_trim_tol=0.01,
size_trim_tol=0.0001, qc_tol=0.03)
print(reg.summary())
y_pred_test = reg.predict(X_test)