熊猫大火

时间:2018-12-17 10:10:41

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

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

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

现在,对于数据帧中的每一行,我都有journalID和TFIDF向量。我想将SVM与所有类型的内核一起应用,其中TFIDF向量作为特征,JournalID作为标签。由于SVM在pyspark的ML软件包中不存在,因此我将不得不使用Sklearn的SVM实现。现在,什么是继续进行下去的最佳方法。我应该将这个大数据框转换为熊猫数据框,然后在熊猫数据框的列上应用sklearn算法,还是有更好的方法。

1 个答案:

答案 0 :(得分:0)

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

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