【发布时间】:2017-03-28 12:21:21
【问题描述】:
我正在使用 scikit-learn 进行问题分类。我有这个代码:
print(features[0], '\n')
vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5,
stop_words='english')
features = vectorizer.fit_transform(features)
print(features[0], '\n')
selector = SelectPercentile(f_classif, percentile=100)
selector.fit(features, labels)
features = selector.transform(features).toarray()
print(features[0])
print(len(features[0]), '\n')
产生以下结果:
how serfdom develop leav russia ?
(0, 5270) 0.499265751002
(0, 3555) 0.473352969263
(0, 1856) 0.449852125968
(0, 5433) 0.569476725713
[ 0. 0. 0. ..., 0. 0. 0.]
6743
第一个问题是tfidfVectorizer返回的矩阵是什么意思? sklearn 文档说:
学习词汇和 idf,返回术语-文档矩阵。 这相当于先拟合后变换,但实现效率更高。
来自维基百科:
显示哪些文档包含哪些术语以及它们出现的次数。
矩阵的维基百科示例很简单,但返回的值似乎完全不同。
接下来,SelectPercentile 函数应返回最重要的特征列表,具体取决于给定的百分比:
将 X 减少到选定的特征。
为什么我会获得 6743 个功能? :D
P.S.:该程序似乎以 89% 的准确率运行。
编辑:我是 python 和机器学习的新手,所以请像我五岁一样解释它。
【问题讨论】:
-
交叉发布:stats.stackexchange.com/q/245928/2921,stackoverflow.com/q/40595936/781723。请do not post the same question on multiple sites。每个社区都应该诚实地回答问题,而不会浪费任何人的时间。
标签: python machine-learning scikit-learn tf-idf feature-selection