- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试在 FANN 库的帮助下编写简单的垃圾邮件分类器。为此,我收集了一些垃圾邮件和非垃圾邮件,并收集了一本最常用的英语单词词典。我使用以下代码创建了一个具有一个隐藏层的神经网络:
num_input = get_input_size(dictionary_size)
num_output = 1
ann.create_standard_array((num_input, num_neurons_hidden, num_output))
ann.set_activation_function_hidden(libfann.SIGMOID_SYMMETRIC)
ann.set_activation_function_output(libfann.SIGMOID_SYMMETRIC)
ann.set_training_algorithm(libfann.TRAIN_INCREMENTAL)
当信件是非垃圾邮件时输出为 1,当它是垃圾邮件时输出 -1。每个输入神经元表示特定单词是否在电子邮件中(1 - 单词在邮件中。0 - 不是)
为了训练神经网络,我使用以下代码。(对于训练集中的每封电子邮件)
# Create input from train e-mail letter
input = get_input(train_res, train_file, dictionary)
ann.train(input, (train_res,))
要检查来自测试集的电子邮件是否是垃圾邮件,我使用以下代码:(对于测试集中的每封电子邮件)
input = get_input(SPAM, test_spam, dictionary)
res = ann.run(input)[0]
但无论我使用多大的词典(我尝试从 1000 个单词到 40000 个单词)或隐藏层中的神经元数量(20 到 640),在我的网络训练后它都假定几乎所有电子邮件都是垃圾邮件或火腿。例如,我收到这样的结果:
Dictionary size: 10000
Hidden layer size: 80
Correctly classified hams: 596
Incorrectly classified hams: 3845
Correctly classified spams: 436
Incorrectly classified spams: 62
几乎所有垃圾邮件都被正确分类,但所有垃圾邮件都被错误分类,或者结果如下:
Dictionary size: 20000
Hidden layer size: 20
Correctly classified hams: 4124
Incorrectly classified hams: 397
Correctly classified spams: 116
Incorrectly classified spams: 385
相反。我尝试使用更多的训练数据。我从训练集中大约 1000 封电子邮件开始(垃圾邮件与非垃圾邮件的比例接近 50:50),现在我正在用大约 4000 封电子邮件(垃圾邮件:非垃圾邮件大约 50:50)进行测试,但结果是一样。
可能的问题是什么?提前谢谢你。
最佳答案
您是否断言垃圾邮件和普通邮件在您的单词列表中的单词内容方面存在显着差异?我的猜测是,就常规单词的内容而言,垃圾邮件和非垃圾邮件之间可能没有非常明显的区别。
如果您使用的是“真正的”垃圾邮件,许多垃圾邮件制造者会使用称为贝叶斯投毒 的方法,其中包含大量“合法”文本以混淆垃圾邮件过滤器。由于您只是过滤常用词的内容,而不是垃圾邮件/非垃圾邮件在统计上常见的词,因此您的方法将对贝叶斯中毒非常敏感。
关于python - 垃圾邮件分类任务中奇怪的 FANN 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009112/
在 FANN 中,导入训练数据后,我会根据我正在使用的激活函数对其进行缩放。我使用 FANN_SIGMOID_SYMMETRIC,所以它应该是 -1.0 和 1.0。 我的训练数据范围是[-100,1
使用 FANN图书馆我得到了不可预测的结果。训练文件: 132 600 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
我编译了一个简单的程序: #include #include #include int main(int argc, char* argv[]) { struct fann *ann =
我正在使用带有给定代码的 FANN 库。 #include #include "doublefann.h" int main() { const NUM_ITERATIONS = 10000
我正在尝试使用 MinGW 在 Windows 上构建一个基本的 FANN(快速人工神经网络)项目。然而,每当我尝试链接可执行文件时,我都会遇到一堆 undefined reference 错误。有趣
我正在尝试 FANN PHP 模块,并且能够成功运行此处的示例 http://php.net/manual/en/fann.examples-1.php 我将其修改为能够处理 5 个输入,并使用任意函
我正在使用 FANN 库构建神经网络来处理回归问题。问题是,一旦网络在相关训练集上接受了训练(这似乎工作得很好),每个单独的测试输出完全相同的输出。换句话说,给定我的 16 个预测变量的任何状态,根据
我正在开发一款使用 FANN(快速人工神经网络库)的软件。在多次尝试编写自己的 ANN 代码以编译 FANN 示例程序(这里是 C++ XOR 近似程序)的尝试失败后,我尝试过。这是来源。 #incl
我尝试在 FANN 库的帮助下编写简单的垃圾邮件分类器。为此,我收集了一些垃圾邮件和非垃圾邮件,并收集了一本最常用的英语单词词典。我使用以下代码创建了一个具有一个隐藏层的神经网络: num_input
我想通过将配置保存到数据库中来使用 FANN,然后在运行期间加载它。所有功能似乎都在将网络保存/加载到配置文件中。但是我的应用程序不能有临时文件。 如何将训练保存到字符串中/从字符串加载网络?我正在使
我一直在试验 FANN库,它似乎是一个很棒的神经网络库,但我在如何使用它方面遇到了一些问题。 所以我在这里尝试做的是训练一个神经网络,为了弄乱库,给它一个输入并期望一个输出。 FANN::neural
使用 FANN 我无法成功运行从 FANN 网站复制粘贴的代码。我在 Windows 7 和 MS Visual Studio 2008 上使用 FANN 2.2.0 版。我的 XOR 示例训练程序代
我在快速人工神经网络文档中发现种子函数是 fann_seed_rand() 但我不明白它是如何工作的。调用或不调用似乎都是一样的。 如何修复种子?主要目标是让 fann_shuffle_data()
我正在使用 FANN 来使用神经网络。 (Link to FANN) 我需要在训练网络后获得权重矩阵,但我没有从文档中找到任何内容。 (Link to documentation) 你知道如何得到这个
我有以下循环: for (int i = 1; i ::iterator it = batchFiles.begin(); it != batchFiles.end(); ++it) {
在这里,我阅读了有关 C/C++ 人工神经网络中 FANN 的很好的引用资料。实际上我正在使用 C++(在带有 g++ v4.6.1 的 Ubuntu 上)。用 C 编写的库具有 C++ 的包装器。但
我有一个标准的神经网络,我已经训练了一段时间,但直到完善为止。培训类(class)完成后,我将网络保存在磁盘上。 一段时间后,我想从它离开的地方恢复训练网络。问题是,似乎每次我开始新的训练类(clas
我刚刚构建并安装了 libfann以及相关的 python 绑定(bind)。 python 设置似乎运行正常: $ sudo python setup.py install Running SWIG
我已经尝试使用所有 apt-get 安装、pip 和直接从源代码在 Ubuntu 上安装 FANN Python 绑定(bind),但是当我尝试导入 FANN 时,同样的错误不断发生。即,它告诉我fa
我是一名优秀的程序员,十分优秀!