![](/img/trans.png)
[英]Scikit-learn using GridSearchCV on DecisionTreeClassifier
[英]Using Smote with Gridsearchcv in Scikit-learn
我正在處理一個不平衡的數據集,並希望使用 scikit 的 gridsearchcv 進行網格搜索以調整我的模型參數。 為了對數據進行過采樣,我想使用 SMOTE,而且我知道我可以將其作為管道的一個階段包含在內並將其傳遞給 gridsearchcv。 我擔心的是,我認為 smote 將同時應用於訓練和驗證折疊,這不是您應該做的。 驗證集不應過采樣。 整個管道將應用於兩個數據集拆分是否正確? 如果是,我該如何扭轉這種局面? 非常感謝提前
是的,它可以做到,但使用imblearn Pipeline 。
你看, imblearn 有自己的管道來正確處理采樣器。 我在一個類似的問題中描述了這一點。
當在imblearn.Pipeline
對象上調用predict()
時,它將跳過采樣方法並將數據保持原樣傳遞給下一個轉換器。 您可以通過查看此處的源代碼來確認:
if hasattr(transform, "fit_sample"):
pass
else:
Xt = transform.transform(Xt)
因此,為了使其正常工作,您需要以下內容:
from imblearn.pipeline import Pipeline
model = Pipeline([
('sampling', SMOTE()),
('classification', LogisticRegression())
])
grid = GridSearchCV(model, params, ...)
grid.fit(X, y)
根據需要填寫詳細信息,管道將負責其余部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.