我有220GB的数据。我已将它作为2列读入spark数据帧:JournalID和Text。现在我的数据帧中有27个缺少行。
使用NGram类,我在数据框中添加了两列Unigram和Bigram,其中包含Text列中的unigrams和bigrams。然后我在unigram和bigram列上使用TF和IDF类pyspark计算TFIDF,并将其作为数据帧中的另一列添加。
现在我有数据帧中每一行的journalID和TFIDF向量。我想将SVM应用于所有类型的内核,其中TFIDF向量作为特征,JournalID作为标签。由于SVM不存在于pyspark的ML包中,我将不得不使用Sklearn的SVM实现。现在,最好的方法是继续进行。我应该将这个大的Dataframe转换为pandas数据帧,然后在pandas dataframe列上应用sklearn算法,或者有更好的方法。
要学习SVM,您不需要将所有数据传递给分类器。因此,您可以使用必要的列对数据(1M行)进行采样(例如,您不需要原始文本),然后将示例数据转换为pandas数据帧。
如果要在整个数据上训练模型,可以加载具有适合RAM空间大小的数据块,并每次将每个数据块学习到模型中。换句话说,在训练每个块之后加载训练和卸载,以防止将整个数据加载到RAM中进行分析的问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。