【发布时间】:2020-07-16 23:03:33
【问题描述】:
我决定使用 Sklearn 的 Pipeline 类来确保我的模型不容易出现数据泄漏。
但是,我的多类分类数据集非常不平衡(3 类),因此需要实现数据集平衡。但是,我已经进行了适当的研究,但我找不到关于何时以及如何执行此数据集重新平衡步骤的答案。应该在缩放之前还是之后完成?应该在训练/测试拆分之后还是之后完成?
为简单起见,我不会使用 SMOTE,而是使用随机少数上采样。任何答案将不胜感激。
我的代码如下:
#All necessary packages have already been imported
x = df['MACD', 'MFI', 'ROC', 'RSI', 'Ultimate Oscillator', 'Williams %R', 'Awesome Oscillator', 'KAMA',
'Stochastic Oscillator', 'TSI', 'Volume Accumulator', 'ADI', 'CMF', 'EoM', 'FI', 'VPT','ADX','ADX Negative',
'ADX Positive', 'EMA', 'CRA']
y = df['Label']
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 0)
pipe = Pipeline([('sc', StandardScaler()),
('svc', SVC(decision_function_shape = 'ovr'))])
candidate_parameters = [{'C': [0.0001, 0.001, 0.01, 0.1, 1, 2, 3],
'gamma': [0.0001, 0.001, 0.01, 0.1, 1, 2, 3], 'kernel': ['poly']
}]
clf = GridSearchCV(estimator = pipe, param_grid = candidate_parameters, cv = 5, n_jobs = -1)
clf.fit(X_train, y_train)
【问题讨论】:
标签: machine-learning scikit-learn pipeline