我使用随机森林创建了一个分类模型。为了验证模型,我使用了 10 次拆分的 K-Fold 方法,并通过 f1-score 测量模型性能。当我执行此操作时,前几折的 f1 分数非常低,其余折的 f1 分数非常高。
我期望每次分组的得分范围相同。
代码:
from sklearn.ensemble.forest import RandomForestClassifier
from sklearn.model_selection._split import KFold
kf = KFold(n_splits=20,random_state=41)
f1list = []
for train_index, test_index in kf.split(XX):
print("Train:", train_index, "Validation:",test_index)
X_train, X_test = XX[train_index], XX[test_index]
Y_train, Y_test = YY[train_index], YY[test_index]
LR1 = RandomForestClassifier(n_estimators=10,criterion='entropy',random_state=1,max_depth=25,warm_start=True,bootstrap=True, oob_score=True,n_jobs=-1)
model1 = LR1.fit(X_train,Y_train)
pred1 = model1.predict(X_test)
from sklearn.metrics import f1_score
f1list.append(f1_score(pred1,Y_test))
并且 10 次拆分的 f1-score 列表是
[0.3659305993690852, 0.32, 0.3440860215053763, 0.3668639053254438, 0.4183381088825215, 0.9969525468001741, 0.9979652345793849, 0.9984892504357932, 0.9980234856412045, 0.9977904407489243]