亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

cross_val_score和分層KFold之間的F分數差異

cross_val_score和分層KFold之間的F分數差異

智慧大石 2022-08-02 10:47:43
我想對不平衡的數據使用隨機森林分類器,其中X是表示特征的np.array,y是表示標簽的np.array(具有90%0值和10%1值的標簽)。由于我不確定如何在交叉驗證中進行分層,并且如果它有所作為,我也使用StratifiedKFold手動交叉驗證。我預計結果不一樣,但有些相似。由于情況并非如此,我想我錯誤地使用了一種方法,但我不明白是哪一種。這是代碼from sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import StratifiedKFold, cross_val_score, train_test_splitfrom sklearn.metrics import f1_scorerfc = RandomForestClassifier(n_estimators = 200,                             criterion = "gini",                             max_depth = None,                              min_samples_leaf = 1,                              max_features = "auto",                              random_state = 42,                             class_weight = "balanced")X_train_val, X_test, y_train_val, y_test = train_test_split(X, y, test_size = 0.20, random_state = 42, stratify=y)我還嘗試了沒有class_weight參數的分類器。從這里開始,我將這兩種方法與f1分數進行比較cv = cross_val_score(estimator=rfc,                     X=X_train_val,                     y=y_train_val,                     cv=10,                     scoring="f1")print(cv)來自交叉驗證的10個f1分數都在65%左右?,F在分層KFold:skf = StratifiedKFold(n_splits=10, shuffle=True, random_state=42) for train_index, test_index in skf.split(X_train_val, y_train_val):    X_train, X_val = X_train_val[train_index], X_train_val[test_index]    y_train, y_val = y_train_val[train_index], y_train_val[test_index]    rfc.fit(X_train, y_train)    rfc_predictions = rfc.predict(X_val)    print("F1-Score: ", round(f1_score(y_val, rfc_predictions),3))StratifiedKFold的10個f1分數讓我獲得了大約90%的值。這就是我感到困惑的地方,因為我不理解兩種方法之間的巨大偏差。如果我只是將分類器擬合到訓練數據并將其應用于測試數據,我也會得到大約90%的f1分數,這讓我相信我應用cross_val_score的方式是不正確的。
查看完整描述

1 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

造成這種差異的一個可能原因是,使用默認參數,而在手動交叉驗證使用中,您已經通過了 。因此,它可能只是數據排序方式的產物,即在不洗牌的情況下進行交叉驗證會產生更差的F1分數。cross_val_scoreStratifiedKFoldshuffle=FalseStratifiedKFoldshuffle=True

嘗試在創建實例時傳遞,以查看分數是否與 匹配,然后,如果要在應用之前手動洗牌時使用隨機播放訓練數據。shuffle=Falseskfcross_val_scorecross_val_scorecross_val_score


查看完整回答
反對 回復 2022-08-02
  • 1 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號