- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
阅读 scikit-learn 中文本特征提取的文档,我不确定可用于 TfidfVectorizer(也可能是其他矢量化器)的不同参数如何影响结果。
以下是我不确定它们如何工作的参数:
TfidfVectorizer(stop_words='english', ngram_range=(1, 2), max_df=0.5, min_df=20, use_idf=True)
最佳答案
我在这篇文章中看到了几个问题。
- How do the different arguments in TfidfVectorizer interact with one another?
ngram_range
to (1,1) 仅输出单字标记,(1,2) 输出单字标记和两字标记,(2, 3) 输出两字标记和三字标记等。
ngram_range
携手合作
analyzer
.套装
analyzer
为“word”输出单词和短语,或设置为“char”输出字符ngrams。
stop_words
删除意义不大的英语单词。
from sklearn.feature_extraction.stop_words import ENGLISH_STOP_WORDS
[('the', 79808),
('of', 40024),
('and', 38311),
('to', 28765),
('in', 22020),
('a', 21124),
('that', 12512),
('he', 12401),
('was', 11410),
('it', 10681),
('his', 10034),
('is', 9773),
('with', 9739),
('as', 8064),
('i', 7679),
('had', 7383),
('for', 6938),
('at', 6789),
('by', 6735),
('on', 6639)]
max_df
可能是有意义的。作为说 0.95 的浮点数以删除前 5%,但是您假设前 5% 都是停用词,但情况可能并非如此。这实际上取决于您的文本数据。在我的工作中,最常见的词或短语不是停用词是很常见的,因为我在非常特定的主题中使用密集文本(搜索查询数据)。
min_df
作为一个整数来删除罕见的单词。如果它们只出现一次或两次,它们不会增加太多值(value),而且通常非常晦涩。此外,通常有很多,所以忽略它们说
min_df=5
可以大大减少您的内存消耗和数据大小。
token_pattern
使用正则表达式
\b\w\w+\b
这意味着标记必须至少有 2 个字符长,因此像“I”、“a”这样的词被删除,并且像 0 - 9 这样的数字也被删除。您还会注意到它删除了撇号
- What happens first, ngram generation or stop word removal?
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn.feature_extraction.stop_words import ENGLISH_STOP_WORDS
docs = np.array(['what is tfidf',
'what does tfidf stand for',
'what is tfidf and what does it stand for',
'tfidf is what',
"why don't I use tfidf",
'1 in 10 people use tfidf'])
tfidf = TfidfVectorizer(use_idf=False, norm=None, ngram_range=(1, 1))
matrix = tfidf.fit_transform(docs).toarray()
df = pd.DataFrame(matrix, index=docs, columns=tfidf.get_feature_names())
for doc in docs:
print(' '.join(word for word in doc.split() if word not in ENGLISH_STOP_WORDS))
tfidf
does tfidf stand
tfidf does stand
tfidf
don't I use tfidf
1 10 people use tfidf
10 and does don for in is \
what is tfidf 0.0 0.0 0.0 0.0 0.0 0.0 1.0
what does tfidf stand for 0.0 0.0 1.0 0.0 1.0 0.0 0.0
what is tfidf and what does it stand for 0.0 1.0 1.0 0.0 1.0 0.0 1.0
tfidf is what 0.0 0.0 0.0 0.0 0.0 0.0 1.0
why don't I use tfidf 0.0 0.0 0.0 1.0 0.0 0.0 0.0
1 in 10 people use tfidf 1.0 0.0 0.0 0.0 0.0 1.0 0.0
it people stand tfidf use \
what is tfidf 0.0 0.0 0.0 1.0 0.0
what does tfidf stand for 0.0 0.0 1.0 1.0 0.0
what is tfidf and what does it stand for 1.0 0.0 1.0 1.0 0.0
tfidf is what 0.0 0.0 0.0 1.0 0.0
why don't I use tfidf 0.0 0.0 0.0 1.0 1.0
1 in 10 people use tfidf 0.0 1.0 0.0 1.0 1.0
what why
what is tfidf 1.0 0.0
what does tfidf stand for 1.0 0.0
what is tfidf and what does it stand for 2.0 0.0
tfidf is what 1.0 0.0
why don't I use tfidf 0.0 1.0
1 in 10 people use tfidf 0.0 0.0
use_idf=False, norm=None
设置这些后,就相当于使用了 sklearn 的 CountVectorizer。它只会返回计数。 token_pattern
类似于 token_pattern=r"\b\w[\w']+\b"
包括撇号。 tfidf = TfidfVectorizer(use_idf=False, norm=None, stop_words='english', ngram_range=(1, 2))
10 10 people does does stand \
what is tfidf 0.0 0.0 0.0 0.0
what does tfidf stand for 0.0 0.0 1.0 0.0
what is tfidf and what does it stand for 0.0 0.0 1.0 1.0
tfidf is what 0.0 0.0 0.0 0.0
why don't I use tfidf 0.0 0.0 0.0 0.0
1 in 10 people use tfidf 1.0 1.0 0.0 0.0
does tfidf don don use people \
what is tfidf 0.0 0.0 0.0 0.0
what does tfidf stand for 1.0 0.0 0.0 0.0
what is tfidf and what does it stand for 0.0 0.0 0.0 0.0
tfidf is what 0.0 0.0 0.0 0.0
why don't I use tfidf 0.0 1.0 1.0 0.0
1 in 10 people use tfidf 0.0 0.0 0.0 1.0
people use stand tfidf \
what is tfidf 0.0 0.0 1.0
what does tfidf stand for 0.0 1.0 1.0
what is tfidf and what does it stand for 0.0 1.0 1.0
tfidf is what 0.0 0.0 1.0
why don't I use tfidf 0.0 0.0 1.0
1 in 10 people use tfidf 1.0 0.0 1.0
tfidf does tfidf stand use \
what is tfidf 0.0 0.0 0.0
what does tfidf stand for 0.0 1.0 0.0
what is tfidf and what does it stand for 1.0 0.0 0.0
tfidf is what 0.0 0.0 0.0
why don't I use tfidf 0.0 0.0 1.0
1 in 10 people use tfidf 0.0 0.0 1.0
use tfidf
what is tfidf 0.0
what does tfidf stand for 0.0
what is tfidf and what does it stand for 0.0
tfidf is what 0.0
why don't I use tfidf 1.0
1 in 10 people use tfidf 1.0
don't I use
有 't
脱光了,因为I
少于两个字符,它被删除,所以单词加入 don use
...实际上不是结构,可能会稍微改变结构!
- does it make sense to use max_df/min_df arguments together with use_idf argument?
max_df
场景。
min_df
很多,使用
min_df
是有意义的如果您正在处理一个庞大的数据集,因为稀有词不会增加值(value),只会导致很多处理问题。我不使用
max_df
很多,但我确信在处理像所有维基百科这样的数据时,有些情况下删除前 x% 可能是有意义的。
关于python - 理解python scikit-learn中的文本特征提取TfidfVectorizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557417/
来自文档: sklearn.preprocessing.MinMaxScaler.min_ : ndarray, shape (n_features,) Per feature adjustment
这是我的数据:(我重置了索引。日期应该是索引) Date A B C D 0 2013-10-07 -0.002
我正在构建一个分类器,通过贷款俱乐部数据,选择最好的 X 笔贷款。我训练了一个随机森林,并创建了通常的 ROC 曲线、混淆矩阵等。 混淆矩阵将分类器的预测(森林中树木的多数预测)作为参数。但是,我希望
是否有类似于 的 scikit-learn 方法/类元成本 在 Weka 或其他实用程序中实现的算法以执行常量敏感分析? 最佳答案 不,没有。部分分类器提供 class_weight和 sample_
我发现使用相同数据的两种交叉验证技术之间的分类性能存在差异。我想知道是否有人可以阐明这一点。 方法一:cross_validation.train_test_split 方法 2:分层折叠。 具有相同
我正在查看 scikit-learn 文档中的这个示例:http://scikit-learn.org/0.18/auto_examples/model_selection/plot_nested_c
我想训练一个具有很多标称属性的数据集。我从一些帖子中注意到,要转换标称属性必须将它们转换为重复的二进制特征。另外据我所知,这样做在概念上会使数据集稀疏。我也知道 scikit-learn 使用稀疏矩阵
我正在尝试在 scikit-learn (sklearn.feature_selection.SelectKBest) 中通过卡方方法进行特征选择。当我尝试将其应用于多标签问题时,我收到此警告: 用户
有几种算法可以构建决策树,例如 CART(分类和回归树)、ID3(迭代二分法 3)等 scikit-learn 默认使用哪种决策树算法? 当我查看一些决策树 python 脚本时,它神奇地生成了带有
我正在尝试在 scikit-learn (sklearn.feature_selection.SelectKBest) 中通过卡方方法进行特征选择。当我尝试将其应用于多标签问题时,我收到此警告: 用户
有几种算法可以构建决策树,例如 CART(分类和回归树)、ID3(迭代二分法 3)等 scikit-learn 默认使用哪种决策树算法? 当我查看一些决策树 python 脚本时,它神奇地生成了带有
有没有办法让 scikit-learn 中的 fit 方法有一个进度条? 是否可以包含自定义的类似 Pyprind 的内容? ? 最佳答案 如果您使用 verbose=1 初始化模型调用前 fit你应
我正在尝试使用 grisSearchCV 在 scikit-learn 中拟合一些模型,并且我想使用“一个标准错误”规则来选择最佳模型,即从分数在 1 以内的模型子集中选择最简约的模型最好成绩的标准误
我有一个预定义的决策树,它是根据基于知识的拆分构建的,我想用它来进行预测。我可以尝试从头开始实现决策树分类器,但那样我就无法在 Scikit 函数中使用 predict 等内置函数。有没有办法将我的树
我正在使用随机森林解决分类问题。为此,我决定使用 Python 库 scikit-learn。但我对随机森林算法和这个工具都很陌生。我的数据包含许多因子变量。我用谷歌搜索,发现像我们在线性回归中所做的
我使用 Keras 回归器对数据进行回归拟合。我使用 Scikit-learn wrapper 和 Pipeline 来首先标准化数据,然后将其拟合到 Keras 回归器上。有点像这样: from s
在 scikit-learn ,有一个 的概念评分函数 .如果我们有一些预测标签和真实标签,我们可以通过调用 scoring(y_true, y_predict) 来获得分数。 .这种评分函数的一个例
我知道 train_test_split 方法将数据集拆分为随机训练和测试子集。并且使用 random_state=int 可以确保每次调用该方法时我们对该数据集都有相同的拆分。 我的问题略有不同。
我正在使用 scikit-learn 0.18.dev0。我知道之前有人问过完全相同的问题 here .我尝试了那里提供的答案,但出现以下错误 >>> def mydist(x, y): ...
我试图在 scikit-learn 中结合递归特征消除和网格搜索。正如您从下面的代码(有效)中看到的那样,我能够从网格搜索中获得最佳估计量,然后将该估计量传递给 RFECV。但是,我宁愿先进行 RFE
我是一名优秀的程序员,十分优秀!