Skip to content

Instantly share code, notes, and snippets.

@risenW
Created July 10, 2019 12:28
Show Gist options
  • Save risenW/4a78d39862386fa7f592ff7cba37d97f to your computer and use it in GitHub Desktop.
Save risenW/4a78d39862386fa7f592ff7cba37d97f to your computer and use it in GitHub Desktop.
from sklearn.model_selection import KFold
def stackingModel(base_models, meta_model, features, target, nfolds=10):
#Split data into folds
kfold = KFold(n_splits=nfolds, shuffle=True, random_state=rand_seed)
#initialize arrays to hold predictions
test_predictions = np.zeros((features.shape[0], len(base_models)))
train_predictions = np.zeros((features.shape[0], len(base_models)))
# Train base models
for i, model in enumerate(base_models):
for train_index, test_index in kfold.split(features, target):
#Fit train data on the model
model.fit(np.array(features)[train_index], np.array(target)[train_index])
#Make prediction on the holdout data
y_pred = model.predict(np.array(features)[test_index])
#make predictions on train data
t_pred = model.predict(np.array(features)[train_index])
#Append the prediction to out of folds
test_predictions[test_index, i] = y_pred
#Append predictions to train predictions
train_predictions[train_index, i] = t_pred
# Now train the meta-model using the train predictions as new feature
meta_model.fit(train_predictions, target)
#Make fianl predictions on the average of out of fold predictions
final_preds = meta_model.predict(np.mean([test_predictions], axis=0))
return final_preds
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment