如何获得 tf-idf 分类器的最佳特征?
How to get best features for tf-idf classifiers?
我有一个评论列表(文本),我必须用一些分类器(输入)对其进行分类。
我正在使用 pipeline
来执行此操作,并且我使用 KFold
因为数据集非常小。
我想知道 SelectKBest
分类器的最佳特征名称,但由于它在 pipeline
中,我不知道如何获得最佳特征名称。
comments
是一个字符串列表。
def classify(classifiers, folder="tfidf-classifiers"):
comments = get_comments()
labels = get_labels()
tfidf_vector = TfidfVectorizer(tokenizer=tokenizer, lowercase=False)
stats = {}
for i in classifiers:
classifier = i()
pipe = Pipeline(
[('vectorizer', tfidf_vector), ('feature_selection', SelectKBest(chi2)), ('classifier', classifier)])
result = cross_val_predict(pipe, comments, labels, cv=KFold(n_splits=10, shuffle=True))
cm = confusion_matrix(result, labels, [information, non_information])
saveHeatmap(cm, i.__name__, folder)
report = classification_report(labels, result, digits=3, target_names=['no', 'yes'], output_dict=True)
stats[i.__name__] = report
return stats
我在互联网上搜索并找到了这个:
pipe.named_steps['feature_selection'].get_support()
但我不能这样做,因为我没有在管道上调用 fit
。我在这里使用管道:
result = cross_val_predict(pipe, comments, labels, cv=KFold(n_splits=10, shuffle=True))
如何获得最好的 K 个特征名称?
我想要的是一个简单的单词列表,"helped most" 分类器正在做他们的工作...
来自
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df["Notes"])
from sklearn.feature_selection import chi2
chi2score = chi2(X,df['AboveAverage'])[0]
wscores = zip(vectorizer.get_feature_names(),chi2score)
wchi2 = sorted(wscores,key=lambda x:x[1])
topchi2 = zip(*wchi2[-20:])
show=list(topchi2)
您可以使用 f_classif 或其他人轻松更改得分。
我有一个评论列表(文本),我必须用一些分类器(输入)对其进行分类。
我正在使用 pipeline
来执行此操作,并且我使用 KFold
因为数据集非常小。
我想知道 SelectKBest
分类器的最佳特征名称,但由于它在 pipeline
中,我不知道如何获得最佳特征名称。
comments
是一个字符串列表。
def classify(classifiers, folder="tfidf-classifiers"):
comments = get_comments()
labels = get_labels()
tfidf_vector = TfidfVectorizer(tokenizer=tokenizer, lowercase=False)
stats = {}
for i in classifiers:
classifier = i()
pipe = Pipeline(
[('vectorizer', tfidf_vector), ('feature_selection', SelectKBest(chi2)), ('classifier', classifier)])
result = cross_val_predict(pipe, comments, labels, cv=KFold(n_splits=10, shuffle=True))
cm = confusion_matrix(result, labels, [information, non_information])
saveHeatmap(cm, i.__name__, folder)
report = classification_report(labels, result, digits=3, target_names=['no', 'yes'], output_dict=True)
stats[i.__name__] = report
return stats
我在互联网上搜索并找到了这个:
pipe.named_steps['feature_selection'].get_support()
但我不能这样做,因为我没有在管道上调用 fit
。我在这里使用管道:
result = cross_val_predict(pipe, comments, labels, cv=KFold(n_splits=10, shuffle=True))
如何获得最好的 K 个特征名称?
我想要的是一个简单的单词列表,"helped most" 分类器正在做他们的工作...
来自
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df["Notes"])
from sklearn.feature_selection import chi2
chi2score = chi2(X,df['AboveAverage'])[0]
wscores = zip(vectorizer.get_feature_names(),chi2score)
wchi2 = sorted(wscores,key=lambda x:x[1])
topchi2 = zip(*wchi2[-20:])
show=list(topchi2)
您可以使用 f_classif 或其他人轻松更改得分。