【发布时间】:2020-09-30 03:14:52
【问题描述】:
对于给定的不平衡数据,我创建了不同的标准化管道和一个热编码
numeric_transformer = Pipeline(steps = [('scaler', StandardScaler())])
categorical_transformer = Pipeline(steps=['ohe', OneHotCategoricalEncoder()])
然后一个柱式变压器将上述管道保持在一个整体
from sklearn.compose import ColumnTransformer
preprocessor = ColumnTransformer(
transformers=[
('num', numeric_transformer, numeric_features),
('cat', categorical_transformer,categorical_features)]
最终流水线如下
smt = SMOTE(random_state=42)
rf = pl1([('preprocessor', preprocessor),('smote',smt),
('classifier', RandomForestClassifier())])
我正在对不平衡数据进行管道拟合,因此我将 SMOTE 技术与预处理和分类器一起包括在内。由于不平衡,我想检查召回分数。
如下代码所示的正确方法是什么?我的召回率约为 0.98,这可能导致模型过度拟合。如果我犯了任何错误,有什么建议吗?
scores = cross_val_score(rf, X, y, cv=5,scoring="recall")
【问题讨论】:
-
您正在为您的 CV 程序正确应用管道。 “我的召回率在 0.98 左右,这可能导致模型过度拟合”这句话完全无法理解。
-
谢谢,我怀疑选择cross_validation的过程是否在管道中出错。这也是我在管道上的第一个实现。
标签: machine-learning scikit-learn cross-validation imbalanced-data smote