Вы определили X и Y? Кажется, что вы передаете data
DataFrame методу kfold.split
, но позже вы ссылаетесь на X и Y как на объекты данных. Попробуйте сначала настроить X = data[['w1', 'w2', 'w3', 'w4']]
, а затем ссылаться на них, как в своем примере.
Кроме того, я заметил, что вы перезаписываете исходный список scores
в scores = model.get_prediction(X.iloc[test,:])
Например:
X = data[['w1', 'w2', 'w3', 'w4']].values
Y = data['Y'].values
preds, scores = [], []
kfold = KFold(n_splits=10, shuffle=True, random_state=1)
for train_idx, test_idx in kfold.split(data):
X_train, X_test = X[train_idx], X[test_idx]
y_test = Y[test_idx]
model = smf.glm(formula = "Y ~ w1 + w2 + w3 + C(w4)",
data=X_train,
family=sm.families.NegativeBinomial()).fit()
preds.append(model.get_prediction(X_test))
scores.append(model.score(X_test, y_test))
print(scores)