def k_fold_train(self): if self.config.KFOLD: k_fold = KFold(n_splits=self.config.N_FOLDS, shuffle=True, random_state=712) else: k_fold = StratifiedKFold(n_splits=self.config.N_FOLDS, shuffle=True, random_state=712) test_predictions = np.zeros(self.test_features.shape[0]) for train_indices, valid_indices in k_fold.split( self.train_features, None if self.config.KFOLD else self.train_labels): train_x, train_y = self.train_features.iloc[ train_indices, :], self.train_labels.iloc[train_indices, :] valid_x, valid_y = self.train_features.iloc[ valid_indices, :], self.train_labels.iloc[valid_indices, :] model = ctrNet.build_model(self.param) model.train(train_data=(train_x, train_y), dev_data=(valid_x, valid_y)) print("Training Done! Inference...") test_predictions = np.add( test_predictions, rankdata( model.infer(dev_data=(self.test_features, test_predictions))) / test_predictions.shape[0]) del model gc.collect() submission(self.config, test_predictions, True, '')
cross_activation='identity', init_method='uniform', init_value=0.1, feature_nums=len(features), kfold=5) utils.print_hparams(hparam) # # Training model # In[6]: kfold = KFold(n_splits=hparam.kfold, shuffle=True, random_state=712) for i, (train_index, dev_index) in enumerate(kfold.split(train)): print('Fold', i) model = ctrNet.build_model(hparam) model.train(train_data=(train.iloc[train_index][features], train.iloc[train_index]['HasDetections']), dev_data=(train.iloc[dev_index][features], train.iloc[dev_index]['HasDetections'])) print("Training Done! Inference...") if i == 0: preds = model.infer(dev_data=(test[features], test['HasDetections'])) / hparam.kfold else: preds += model.infer(dev_data=(test[features], test['HasDetections'])) / hparam.kfold # # Inference # In[7]: