- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想确保 TfidfVectorizer 对象返回 l2 归一化向量。我正在运行具有不同长度的文档的二元分类问题。
我正在尝试提取每个语料库的归一化向量,因此我假设我可以对 Tfidfvectorizer 矩阵的每一行求和。然而总和大于 1,我认为标准化的 copora 会将所有文档转换为 0-1 之间的范围。
vect = TfidfVectorizer(strip_accents='unicode',
stop_words=stopwords,analyzer='word', use_idf=True, tokenizer=tokenizer, ngram_range=(1,2),sublinear_tf= True , norm='l2')
tfidf = vect.fit_transform(X_train)
# sum norm l2 documents
vect_sum = tfidf.sum(axis=1)
vect_sum 的值大于 1,我认为使用范数会导致所有向量都在 0-1 之间。我刚刚了解到 scikit learn 中的预处理对象 - preprocessing.normalizer 。这是我应该在 Gridsearch 管道中使用的东西吗?请参阅下面的示例。
pipeline = Pipeline([
('plb', normalize(tfidf, norm='l2')), #<-- sklearn.preprocessing
('tfidf', tfidf_vectorizer),
('clf', MultinomialNB()),
])
preprocessing.normalizer 和 Tfidfvectorizer 范数参数有什么区别?
最佳答案
对于 L2,不是行的总和等于 1,而是平方和等于 1。L1 范数将产生一个范数,其中值的总和等于 1。
X_train = [" This is my first sentence", "Short sentence"]
vect = TfidfVectorizer(strip_accents='unicode',analyzer='word', use_idf=True, ngram_range=(1,2),sublinear_tf= True , norm='l2')
tfidf = vect.fit_transform(X_train)
# sum norm l2 documents
vect_sum = tfidf.multiply(tfidf).sum(axis=1)
vect_sum
# matrix([[ 1.],
# [ 1.]])
TF-IDF 仅适用于计数。如果在生成 TF-IDF 权重后执行归一化
,则可以达到相同的效果。
from sklearn.feature_extraction.text import normalize
vect = TfidfVectorizer(strip_accents='unicode',analyzer='word', use_idf=True, ngram_range=(1,2),
sublinear_tf= True , norm=None)
tfidf = vect.fit_transform(X_train)
tfidf = normalize(tfidf)
这相当于原始示例中的 TfidfVectorizer(...,norm='l2')
。
关于python - Tfidvectorizer - L2 归一化向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35114292/
我想确保 TfidfVectorizer 对象返回 l2 归一化向量。我正在运行具有不同长度的文档的二元分类问题。 我正在尝试提取每个语料库的归一化向量,因此我假设我可以对 Tfidfvectoriz
我有一个数据集,其中包含 3 列 310 条数据。这些列都是文本。第一列是用户在查询表单中输入的文本,第二列是标签(六个标签之一),说明输入属于哪个查询类别。 >>> data.shape (310
我是一名优秀的程序员,十分优秀!