【问题标题】:Training Bayesian Classifier训练贝叶斯分类器
【发布时间】:2019-08-08 06:26:48
【问题描述】:

我正在尝试在 Python 中训练和测试贝叶斯分类器。

这些代码行来自我找到的一个示例here,但我不明白它们的作用。

train_labels = np.zeros(702)
train_labels[351:701] = 1
train_matrix = extract_features(train_dir)

测试集中后面有类似的代码块:

test_matrix = extract_features(test_dir)
test_labels = np.zeros(260)
test_labels[130:260] = 1

想知道这是做什么的以及如何将其应用于不同的分类示例? [] 中的数字是什么意思? 非常感谢

【问题讨论】:

    标签: python-3.x naivebayes


    【解决方案1】:

    您的帖子中引用的示例代码正在使用朴素贝叶斯和 SVC 模型训练二元分类器。

    train_labels = np.zeros(702)
    train_labels[351:701] = 1
    train_matrix = extract_features(train_dir)
    

    这是为最初全为 0 的 702 条记录设置标签。并将后半部分设置为 1。二进制标签,例如:垃圾邮件或火腿、真或假等。 extract_features 构建了输入到这些模型的 {(docid, wordid)->wordcount,..}。

    训练模型后,您需要查看它在测试集上的表现如何。在这里,您使用 260 条记录作为测试集,前半部分全为 0,后半部分全为 1。

    test_matrix = extract_features(test_dir)
    test_labels = np.zeros(260)
    test_labels[130:260] = 1
    

    最后,您针对测试集运行预测,并评估这两个模型(NB 和 SVC)与 test_set 的准确度有多接近。

    【讨论】:

    • 非常感谢!据我了解,二进制设置可以是任何东西,只要它们是不同的类别?谢谢
    • 另外,记录是否基于目录中的文本文件排序?
    • 未使用订单。朴素贝叶斯是一个简单的词袋模型,其中不使用文本排序。
    • 那么,如果前半部分为 0,后半部分为 1,记录的标签如何工作?
    • 对不起。我以为你的意思是词序。记录顺序应与训练标签顺序相匹配。但每条记录中的词序无关紧要。这就是为什么他们称之为朴素贝叶斯。
    猜你喜欢
    • 2015-06-25
    • 2020-09-13
    • 2017-06-21
    • 2012-02-18
    • 2023-03-23
    • 2017-08-30
    • 2013-04-11
    • 2012-04-18
    相关资源
    最近更新 更多