数据处理 - 随机投影和子采样......完成所有这些操作的正确顺序是什么?

时间:2016-03-18 21:48:18

标签: machine-learning scikit-learn

我正在为负面和正面样本做一个文本二进制分类任务,我想包括以下所有内容:

  • 处理数据..(例如标记化)
  • 特征选择,例如Chi2
  • 应用随机投影,因为我有一个大的稀疏矩阵(n_samples:974,n_features:19329)
  • 应用下采样技术

然后对数据进行分类

我的问题是做这些事的正确顺序是什么? 现在我首先进行下采样,然后对每个子样本我将数据提供给以下内容:

pipeline = Pipeline([
('vectorizer',  CountVectorizer(tokenizer=tokens)),
('chi2', SelectKBest(chi2, k=1000)),
('classifier',SVC()) ])

clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)

在预测之后,我重复下一个子样本的过程

我只是想问一下,以不同的顺序做这件事会产生不同的结果,还是会给出同样的结果?例如对整个训练数据应用特征提取和选择然后执行子采样与首先进行子采样?

1 个答案:

答案 0 :(得分:0)

典型的排序是:

  1. 处理数据..(例如标记化) - 这始终是第一步,因为以下所有技术都要求数据采用矢量化格式

  2. 特征选择如Chi2和应用随机投影,因为我有一个大的稀疏矩阵(n_samples:974,n_features:19329) - 这两种技术都是一般降维过程的一部分,因此它们实际上是同样的步骤,并没有典型的排序(我实际上建议不要使用功能选择,因为这种技术从您的数据中删除信息,这很少是一个好主意。最好留下所有信息并构建一个更强的分类器在顶部,而不是通过启发式删除功能来加强弱分类器。)

  3. 应用下采样技术 - 这一步骤减少了信息量,因此如果应用(并且它是一个好主意 - 有很多技术来处理不平衡但不减少信息量)它应该bt在最后可能的时刻