【问题标题】:how to apply Sklearn SVM implementation over features computed using SPARK ML (Multiclass SVM is absent in Spark ML)如何在使用 SPARK ML 计算的特征上应用 Sklearn SVM 实现(Spark ML 中不存在多类 SVM)
【发布时间】:2019-05-17 16:28:39
【问题描述】:

我有 220 GB 的数据。我已将其作为 2 列读入 spark 数据框:JournalID 和 Text。现在我的数据框中缺少 27 行。

使用 NGram 类,我在数据框中添加了另外两列 Unigram 和 Bigram,其中包含 Text 列中存在的 unigrams 和 bigrams。然后我使用 TF 和 IDF 类的 pyspark 在 unigram 和 bigram 列上计算 TFIDF,并将其添加为数据框中的另一列。

现在我在数据框中的每一行都有 journalID 和 TFIDF 向量。我想将 SVM 与所有类型的内核一起应用,其中 TFIDF 向量作为特征,JournalID 作为标签。由于 pyspark 的 ML 包中不存在多类 SVM,因此我将不得不使用 Sklearn 的 SVM 实现。

下一步的最佳方式是什么。我应该将这个大数据框转换为熊猫数据框,然后在熊猫数据框的列上应用 sklearn 算法还是有更好的方法。

【问题讨论】:

  • SVM 的大多数实现不支持incremental learning,您可以在其中将数据分成多个部分并对其进行学习。也许这就是为什么它不在 pyspark 中的原因。而且 scikit-learn 的 SVM 实现也不支持。

标签: pandas apache-spark dataframe scikit-learn pyspark


【解决方案1】:

要学习 SVM,您不需要将所有数据传递给分类器。因此,您可以仅使用必要的列(例如,您不需要原始文本)对数据(1M 行)进行采样,然后将示例数据转换为 pandas 数据框。

如果您想在整个数据上训练您的模型,您可以加载具有适合您的 RAM 空间大小的数据块,并且每次将每个数据块都学习到模型中。换句话说,在训练每个块后加载和卸载,以防止将整个数据加载到RAM中进行分析的问题。

【讨论】:

  • 但我想要一个在整个数据上训练的模型
  • 能否请您指向一些链接,该链接解释了如何使用 scikit-learn 完成这种渐进式培训
  • @drp 并非所有型号都能做到这一点。见this page
猜你喜欢
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2016-03-14
  • 2017-12-15
  • 2023-03-27
  • 2016-12-28
  • 1970-01-01
  • 2018-05-17
相关资源
最近更新 更多