问题标签 [countvectorizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - 使用 sklearn load_files 进行解码/编码
我正在按照这里的教程 https://github.com/amueller/introduction_to_ml_with_python/blob/master/07-working-with-text-data.ipynb 了解机器学习和文本。
就我而言,我正在使用我下载的推文,正面和负面推文在他们使用的完全相同的目录结构中(试图学习情绪分析)。
在 iPython Notebook 中,我像他们一样加载我的数据:
然后我尝试用 CountVectorizer 来拟合它们
我明白了
UnicodeDecodeError:“utf-8”编解码器无法解码位置 561 中的字节 0xd8:无效的继续字节
这是因为我的推文中有各种非标准文本吗?我没有对我的推文进行任何清理(我假设有一些库可以帮助解决这个问题,以便让一袋单词起作用?)
编辑:我使用 Twython 下载推文的代码:
python - 解释 CountVectorizer 的结果
我想创建一个存储在名为 top100 的 pandas 对象中的电影文本的单词包。我的熊猫对象有 3 列:
- '名称' = 电影的名称
- '文本' = 描述电影的大约 500 个单词的文本
- '流派' = 电影的流派
我现在想使用 sklearn 中的 CountVectorizer 函数为我的数据框中的每部电影创建一个“文本”列的词袋:
这将返回一个字典,其中所有单词都具有极值:
我尝试了各种方法,但我不知道如何解释这个结果。即使我键入 2 个小句子并尝试从中创建一个词云,它也会创建一个包含所有单词和一些高值的字典。
我真正希望 CountVectorizer 返回的内容
该函数不应该为每部电影创建一个字典。这本词典的key应该是mobies的所有文本中出现的所有单词。值应该是这些词在这部电影的文本中出现的次数。
提前致谢!
python - 使用 Python 进行文本分类
我有文本变量中的单词列表及其标签。我喜欢制作一个可以预测新输入文本标签的分类器。
我正在考虑在 Python 中使用 scikit-learn 包来使用 SVM 模型。
我意识到需要将文本转换为矢量形式,所以我正在尝试 TfidfVectorizer 和 CountVectorizer。
到目前为止,这是我使用 TfidfVectorizer 的代码:
我也尝试使用上面相同的代码来使用 CountVectorizer。两者都显示相同的错误结果:
如何解决这个问题呢?谢谢
python - 所有预处理都会降低准确性
我正在使用逻辑回归模型执行网格搜索交叉验证。我首先有我的默认模型,然后是应该预处理数据的模型。数据是属于 4 个类别之一的随机文本文档。即使我只是让它返回数据,我的预处理器似乎也会降低我的准确性和 f1 分数,如下所示。网格搜索在通过不应该做任何事情的预处理后选择的正则化参数 C。
通过一些真正的预处理,例如我已经注释掉的正则表达式行,我还看到我的准确性和 f1 分数有所下降(这似乎是合理的,但我正在摆脱复数形式,并被告知这应该会提高我的分数)。
tensorflow - 将字数向量逆变换为原始文档
我正在训练一个简单的文本分类模型(目前使用 scikit-learn)。使用我使用的词汇表将我的文档样本转换为字数向量
CountVectorizer(vocabulary=myDictionaryWords).fit_transform(myDocumentsAsArrays)
从sklearn.feature_extraction.text
.
这很好用,我随后可以将此字数向量作为特征向量训练我的分类器。但我不知道的是如何将这些字数向量逆变换为原始文档。CountVectorizer
确实有一个功能inverse_transform(X)
,但这只会给你唯一的非零令牌。
据我所知,CountVectorizer 没有任何映射回原始文档的实现。
任何人都知道我如何从它们的计数向量化表示中恢复原始的标记序列?可能有 Tensorflow 或任何其他模块吗?
machine-learning - 在 tfidf 之前使用 CountVectorizer (max_df) 的管道
目前我不确定这个方程是否适用于 stackoverflow 或另一个更理论的统计 QA。但我对以下内容感到困惑。
我正在做一个二进制 tekst 分类任务。对于此任务,我使用管道,示例代码之一如下:
所以这没什么奇怪的,但后来我开始使用参数选项/设置,并注意到下面的代码(因此代码中的步骤和参数)具有最高的准确度得分(f1 得分):
所以我很高兴能找出我获得最高分的参数设置和方法,但我无法弄清楚确切的含义。与“vectorizor”步骤一样,max_df 的设置(忽略出现在 20% 以上的文档中的术语)在 tfidf 之前应用似乎很奇怪(或以某种方式加倍)
此外,它还使用 10.000 的 max_features。在 max_df 或 max_features 之前使用了什么步骤?以及如何解释 max_features 设置此参数并在之后执行 tfidf 。然后它会在 10.000 个特征上执行 tfidf 吗?
对我来说,在使用 max_df 和 max_features 等参数后执行 tfidf 似乎很奇怪?我对么?为什么?还是我应该做能带来最高结果的事情..
我希望有人可以在正确的方向上帮助我,非常感谢。
python - CountVectorizer 给出错误的单词计数?
假设我的文本文件包含以下文本:
敏捷的棕色狐狸跳过了懒惰的狗。小洞不补,大洞吃苦。快速的棕色针迹跳过了懒惰的时间。狐狸及时救了一条狗。
我想使用 sk-learn 的 CountVectorizer 来获取文件中所有单词的字数。(我知道还有其他方法可以做到这一点,但我想使用 CountVectorizer 有几个原因。)这是我的代码:
除了当我打电话时dictionary
,它给了我错误的计数:
任何人都可以就我在这里犯的(无疑是显而易见的)错误提出建议吗?
python - 如何使用 sklearn 向计数向量化特征添加第二个特征?
我的数据集中有 3 列:
评论:产品评论
类型:类别或产品类型
成本:产品成本多少
这是一个多类问题,以 Type 作为目标变量。该数据集中有 64 种不同类型的产品。
审查和成本是我的两个特点。
我已将数据分成 4 组,并删除了Type变量:
对于Review,我使用以下方法对其进行矢量化:
这就是我卡住的地方!
为了运行模型,我需要在训练集中同时拥有我的两个特征,但是,由于 X_train_dtm 是一个稀疏矩阵,我不确定如何将我的 pandas 系列成本特征连接到该稀疏矩阵。由于Cost的数据已经是数字的,我认为我不需要转换它,这就是为什么我没有使用像“FeatureUnion”这样结合了两个转换特征的东西。
任何帮助,将不胜感激!!
示例数据:
更新
应用 tarashypka 的解决方案后,我能够将第二个功能添加到 X_train_dtm。但是,尝试在测试集上运行相同时出现错误:
从 scipy.sparse 导入 hstack
python - sklearn CountVectorizer 返回全零 - 字符串转换问题?
我正在尝试将 sklearn 的 CountVectorizer 与给定的词汇表一起使用。我的词汇是:
向量化的输入取自 pandas 数据帧。我从带有pd.read_csv
and的 csv 中读到了这个encoding='utf8'
:
调用 后CountVectorizer(vocabulary=vocabulary).fit_transform()
,我得到一个全为零的矩阵:
这是因为字符串类型的问题,还是我如何调用 CountVectorizer 的问题?我不确定如何转换字符串类型;我在 python2.7 和 pandas 中尝试了多种不同的encode
调用decode
。任何建议,将不胜感激。
python - Python CountVectorizer:文档中存在术语
我正在用 Python 进行 LDA 分析。是否有一种开箱即用的方式来获取我的语料库中的文本(这是文本字符串的列表)一个单词(编辑:n 个单词的术语)存在?
@titipata 这里的答案给出了词频:如何从文档术语矩阵中提取词频?
词频在这里:
但我想要
编辑:这也适用于您可以定义的 N 字词
我可以如下计算我想要的,但是 CountVectorizer 有没有更快的方法?
编辑:我刚刚为存在而写的内容不适用于 N 个单词的术语。这有效但很慢: