- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
好的,我正在学习 Andrew Ng 的机器学习类(class)。我正在阅读 this chapter并想使用 SKLearn 和 Python 为自己尝试多项式朴素贝叶斯(第 12 页底部)。所以 Andrew 提出了一种方法,在这种情况下,每封电子邮件都是这样编码的
We let
x_i
denote the identity of thei
-th word in the email. Thus,x_i
is now an integer taking values in{1, . . . , |V|}
, where|V|
is the size of our vocabulary (dictionary). An email of n words is now represented by a vector(x1, x2, . . . , xn)
of lengthn
note that n can vary for different documents. For instance, if an email starts with“A NIPS . . . ,”
thenx_1 = 1
(“a”
is the first word in the dictionary), andx2 = 35000
(if“nips”
is the 35000th word in the dictionary).
查看亮点。
所以这也是我在 Python 中所做的。我有一个 vocabulary
,它是一个包含 502 个单词的列表,我对每个“电子邮件”进行了编码,使其以与 Andrew 描述的方式相同的方式表示,例如消息“this is sparta”表示为[495, 296, 359]
和 [495, 296, 415, 359]
的“这不是斯巴达”。
那么问题来了。
显然,SKLearn 的 MultinomialNB
需要具有统一形状的输入(对此我不确定,但截至目前,我收到了 ValueError: setting an array element with a sequence。
,我认为这是因为输入向量的大小不同)。
所以我的问题是,如何将 MultinomialNB
用于多个长度的消息?是否可以?我错过了什么?
这是我用代码做的更多事情:
X = posts['wordsencoded'].values
y = posts['highview'].values
clf = MultinomialNB()
clf.fit(X, y)
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)
print(clf.predict())
堆栈跟踪:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-933-dea987cd8603> in <module>()
3 y = posts['highview'].values
4 clf = MultinomialNB()
----> 5 clf.fit(X, y)
6 MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)
7 print(clf.predict())
/usr/local/lib/python3.4/dist-packages/sklearn/naive_bayes.py in fit(self, X, y, sample_weight)
525 Returns self.
526 """
--> 527 X, y = check_X_y(X, y, 'csr')
528 _, n_features = X.shape
529
/usr/local/lib/python3.4/dist-packages/sklearn/utils/validation.py in check_X_y(X, y, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator)
508 X = check_array(X, accept_sparse, dtype, order, copy, force_all_finite,
509 ensure_2d, allow_nd, ensure_min_samples,
--> 510 ensure_min_features, warn_on_dtype, estimator)
511 if multi_output:
512 y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False,
/usr/local/lib/python3.4/dist-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
371 force_all_finite)
372 else:
--> 373 array = np.array(array, dtype=dtype, order=order, copy=copy)
374
375 if ensure_2d:
ValueError: setting an array element with a sequence.
最佳答案
是的,您的想法是正确的。您必须使用固定长度的向量对每封邮件进行编码。对于训练集的每封电子邮件,此向量称为 502 维(在您的情况下)的字数统计向量。
每个单词计数向量包含训练文件中 502 个词典单词的频率。当然,您现在可能已经猜到它们中的大多数将为零。例如:“this is not sparta not is this sparta”将被编码如下。[0,0,0,0,0,.......0,0,2,0,0,0,......,0,0,2,0,0,... 0,0,2,0,0,......2,0,0,0,0,0,0]
这里,所有四个 2 都位于 502 长度的单词计数向量的第 296、359、415、495 索引处。
因此,将生成一个特征向量矩阵,其行表示训练集的文件数,列表示词典的502个单词。索引“ij”处的值将是字典中第 j 个单词在第 i 个文件中出现的次数。
生成的电子邮件编码(特征向量矩阵),可以提供给 MultinomialNB 进行训练。
在预测类别之前,您还必须为测试电子邮件生成类似的 502 长度编码。
您可以使用以下博客在 ling-spam 数据集上使用 multinomialNB 轻松构建垃圾邮件过滤器分类器。该博文使用 sklearn 和 python 进行实现。
https://appliedmachinelearning.wordpress.com/2017/01/23/nlp-blog-post/
关于python - MultinomialNB - 理论与实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42142366/
简单的单词自动完成功能仅显示与已输入字符相匹配的单词列表。但是我想根据单词出现的概率对自动完成列表中的单词进行排序,这取决于之前输入的单词,依赖于文本语料库的统计模型。为此我需要什么算法和数据结构?你
今天再来说下网站推广的五种基本方式。可能今天的文章比较宏观,按民间的说法就是比较“虚”,所以不愿看此类文章的同志请慎重。个人认为,要想把推广工作做好,不能只懂得务实,以为成天闷头干活就成了;一定要对
引言 众所周知,数据流分析是实现污点分析的一种常用技术 数据流分析分为过程内的数据流分析与过程间的数据流分析。前者是对一个方法体内的数据流分析,主要是基于CFG分析,不涉及方法调用;后者是基于不同
本文分享自华为云社区《大模型LLM之分布式训练》,作者: 码上开花_Lancer。 随着语言模型参数量和所需训练数据量的急速增长,单个机器上有限的资源已无法满足大语言模型训练的要求。需要设计分布式训
本文分享自华为云社区《五大基础算法--动态规划法》,作者: 大金(内蒙的)。 一、基本概念 动态规划法,和分治法极其相似。区别就是,在求解子问题时,会保存该子问题的解,后面的子问题求解时,可以直接拿来
**摘要:**介绍了Angular中依赖注入是如何查找依赖,如何配置提供商,如何用限定和过滤作用的装饰器拿到想要的实例,进一步通过N个案例分析如何结合依赖注入的知识点来解决开发编程中会遇到的问题。 本
使用 xUnit 2.4.1,我正在寻找一种方法让它在动态跳过集成测试时执行我的扭曲命令。 我知道 xUnit 不是为集成测试而设计的,但我无意将 xUnit 用于某些测试,不是-xUnit 用于其他
我遇到了这个问题; “无损压缩算法声称可以保证使某些文件变小而没有文件变大。 这是; a) Impossible b) Possible but may run for an indeterminat
指向结构的指针如此频繁,以至于有一个特殊的运算符:->。以下表达式是等效的: (*x).y x->y 将这个运算符简单地定义为这样的预处理器宏是否公平: #define (x)-> (*(x).)
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 11 年前关闭。 Improve this
我正在使用各种 jquery 插件,包括延迟加载、scrollTo、图像效果以及从阅读本网站上的人们的帖子中收集的各种片段。现在,所有这些效果都从页脚处发出,并且出现了滞后现象。效果就像是,犹豫,或神
我已经搜索了 1 个小时来了解(并获得可行的来源)调整大小在 CSS(媒体)中发生时如何触发以及由哪个组件触发。 我想要的是它在浏览器中的工作方式,调整窗口大小时它的作用。不是代码。 这样做的目的是创
我有一个问题,我不想实现。我只是想在我的推理中得到一点帮助。 我想确定两个对象是否重叠(它们的 x 和 y 坐标,以及它们的高度和宽度都存储在一个 vector 中),然后,如果重叠,则将它们从当前
我的问题实际上与代码无关,我知道如何反转字符串。 这是一个非常常见的面试问题,所以我想澄清一下我认为正确的解决方案是什么。 所以前提开始了,你在字符串的末尾有一个计数器,然后在开头有一个。然后交换它们
我正在尝试在 Android 上编写一个 GPS 跟踪(类似于慢跑应用程序),但 GPS 位置抖动问题使它变得丑陋。当精度为 FINE 且精度在 5 米以内时,位置每秒抖动 1-n 米。您如何从合法运
这个问题在这里已经有了答案: Why does adding 0.1 multiple times remain lossless? (3 个答案) 关闭 8 年前。 以下表达式返回 false(例
问答系统(Question Answering System,QA) 是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。其研究兴起的主要原因是人们对快速、准确地获
NLP问答任务 相似度和规则匹配,都是早期的方法,现在主流的方法,都是基于生成的方法 结构化数据问答,有两种形式,一种是知识图谱形式、一种是关系型数据库形式。 主要应用在企业中,减少销售的
什么是任务型对话: 任务型:用于帮助用户完成某领域的特定任务,例如订餐、查天气、订票等 闲聊型:也称作开放域对话系统,目标是让用户持续的参与到交互过程,提供情感陪伴 问答
常见的对话系统 个人助手 •Apple Siri, Amazon Alexa, Baidu Xiaodu 客户服务•餐厅预定、商品咨询、债务催收 休闲娱乐 •Micr
我是一名优秀的程序员,十分优秀!