我想使用卡方检验从文档中提取关键术语,因此我尝试了以下操作:
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_selection import SelectKBest, chi2
Texts=["should schools have uniform","schools discipline","legalize marriage","marriage culture"]
vectorizer = TfidfVectorizer()
term_doc=vectorizer.fit_transform(Texts)
ch2 = SelectKBest(chi2, "all")
X_train = ch2.fit_transform(term_doc)
print (ch2.scores_)
vectorizer.get_feature_names()
但是,我没有标签,运行上面的代码时得到:
TypeError: fit() missing 1 required positional argument: 'y'
是否可以使用卡方检验来提取最重要的单词而没有任何标签?
最佳答案
卡方统计检验两个变量之间的相关性。因此,对于无监督(无标签)问题的特征选择,这不是正确的统计信息。
根据删除功能的目标,您可以在TfidfVectorizer中应用某些功能预处理。您可能需要限制矢量化器的阈值,以丢弃非常常见的单词和非常稀有的单词。例如,将矢量化器定义为:
TfidfVectorizer(min_df=0.01, max_df=0.9)
将删除少于1%的文档或超过90%的文档中出现的单词。
如果您去除不重要特征的目标是显着降低问题的维数以进行后续分析,则您可能还会发现像TruncatedSVD这样的维数降低技术会很有用。