我最近正在处理一个安静的大数据集,我打算使用tfidfvectorizer进行分析。
实现TFIDFVECTORIZER时,有一些有关MemoryError的帖子,但是,在我的情况下, 在我将数据馈送到tfidfvectorizer中之前发生。这是我的代码。
-
阅读数据
data = pd.read_csv(...) data['description'] is the text content
-
过程数据
from sklearn.feature_extraction.text import TfidfVectorizer description_vectorizer = TfidfVectorizer(max_features=500, min_df=0.2, ngram_range=(2, 3), preprocessor=preprocessor, stop_words='english') description_vectorizer.fit(data.description.values.astype('U'))
拟合tfidfvectorizer时,这里的许多帖子都讨论了MemoryError,但是我发现当我将数据转换为Unicode时,即在此步骤中: data.description.description.values.values.astype.astype('u U'(,发生内存。
因此,有关如何调整TFIDFVECTORIZER中的参数的策略是不在我的情况下很有用。
有人以前遇到过这个问题并知道如何修复它?非常感谢。
我知道,这个线程很旧,但是在遇到同样的问题并且没有找到任何答案之后,我希望这会帮助某人在同一位置找到他或她自己。p>解决方案实际上很简单,它只是代码中的一个小错误:而不是将astype()
应用于这样的numpy阵列:
data.description.values.astype('U')
只是交换语句,然后将.astype()
应用于熊猫系列:
data.description.astype('U').values
希望这会有所帮助!
如果有人想知道,我找到了一种方法Python:使用.loc选择数据产生不同的结果
也许这是一个愚蠢的问题,请让我知道,如果您认为我应该删除它,谢谢。
我也经历了此错误。astype
函数实际上返回如此之快,实际上分配了很少的内存,我只能假设对内存需求的先发制计算失败,无法找到连续的内存块,或者是一个错误。
我在如何 solve 上找不到太多问题,因此i 避免通过完全删除astype
转换并将基础数据集转换为Unicode来在由熊猫加载之前。