在对带有标签(1-5类)的194k条审阅文本的数据集进行的情感分析中,我试图减少基于单词与标签的相关性的特征(单词),从而可以训练分类器。
使用带有默认参数设置的sklearn.feature_extraction.text.CountVectorizer,我可以获得86.7万个功能。在执行fit_transform时,我得到了一个CSR稀疏矩阵,尝试使用toarray()将其放入数据框。
不幸的是,大小为(194439,86719)的数组会导致内存错误。我想我需要它在数据框中,以便计算与df.corr()的相关性。在下面找到我的编码:
corpus = data['reviewText']
vectorizer = CountVectorizer(analyzer ='word')
X = vectorizer.fit_transform(corpus)
content = X.toarray() # here comes the Memory Error
vocab = vectorizer.get_feature_names()
df = pd.DataFrame(data= X.toarray(), columns=vocab)
corr = pd.Series(df.corrwith(df['overall']) > 0.6)
new_vocab = df2[corr[corr == True].index] # should return features that we want to use
有没有一种方法可以通过相关性进行筛选,而不必将格式更改为数据帧? 多数朝着在df上使用相关性的方向发展的帖子不必处理大量数据。
答案 0 :(得分:0)
我发现还有其他方法可以基于相关性来实现特征选择。使用SelectKBest和计分功能f_regression。