我的所有模型都是通过以下方式初始化的:
def intiailize_clf_models(self): model = RandomForestClassifier(random_state=42) self.clf_models.append((model)) model = ExtraTreesClassifier(random_state=42) self.clf_models.append((model)) model = MLPClassifier(random_state=42) self.clf_models.append((model)) model = LogisticRegression(random_state=42) self.clf_models.append((model)) model = xgb.XGBClassifier(random_state=42) self.clf_models.append((model)) model = lgb.LGBMClassifier(random_state=42) self.clf_models.append((model))
这段代码会遍历这些模型,并使用以下代码进行K折交叉验证:
def kfold_cross_validation(self): clf_models = self.get_models() models = [] self.results = {} for model in clf_models: self.current_model_name = model.__class__.__name__ cross_validate = cross_val_score(model, self.xtrain, self.ytrain, cv=4) self.mean_cross_validation_score = cross_validate.mean() print("Kfold cross validation for", self.current_model_name) self.results[self.current_model_name] = self.mean_cross_validation_score models.append(model)
每次运行这个交叉验证时,即使我已经为不同的模型设置了随机状态,我仍然会得到不同的结果。我想知道为什么在交叉验证中会得到不同的结果,以及可以采取什么措施来解决这个问题
回答:
我找到了问题的解决方案。
通过设置以下随机种子解决了问题:
seed = np.random.seed(22)