gpt4 book ai didi

machine-learning - Scikit-learn 多类朴素贝叶斯,概率为 y

转载 作者:行者123 更新时间:2023-11-30 08:55:39 24 4
gpt4 key购买 nike

我正在做推文分类,其中每条推文都可以属于几个类别之一。训练集输出作为该样本属于每个类别的概率给出。例如:tweet#1:C1-0.6、C2-0.4、C3-0.0(C1、C2、C3 是类)

我计划使用 Scikit-learn 的朴素贝叶斯分类器。我在 naive_bayes.py 中找不到适合每个类别的概率进行训练的方法。我需要一个接受训练集每个类的输出概率的分类器。(即:y.shape = [n_samples,n_classes])

如何处理我的数据集以应用 NaiveBayes 分类器?

最佳答案

这并不那么容易,因为“类别概率”可以有多种解释。

对于 NB 分类器和 sklearn,我看到的最简单的过程是:

  1. 根据以下规则分割(复制)您的训练样本:给定 (x, [p1, p2, ..., pk ]) 样本(其中 pi 是第 i 类的概率)创建人工训练样本:(x, 1, p1), (x, 2, p2), ..., (x, k, pk)。因此,您会得到 k 个新观察值,每个观察值“附加”到一个类,并且 pi 被视为 NB(在 sklearn 中)接受的样本权重
  2. 使用 fit(X,Y,sample_weights) 训练您的 NB(其中 X 是您的 x 观测值的矩阵, Y 是上一步中的类矩阵,sample_weights 是上一步中的 pi 矩阵。

例如,如果您的训练集包含两个点:

  • ([0 1],[0.6 0.4])
  • ( [1 3], [0.1 0.9] )

您将它们转换为:

  • ([0 1], 1, 0.6)
  • ([0 1], 2, 0.4)
  • ( [1 3], 1, 0.1)
  • ([1 3], 2, 0.9)

并训练 NB

  • X = [ [0 1], [0 1], [1 3], [1 3] ]
  • Y = [ 1, 2, 1, 2 ]
  • 样本权重 = [ 0.6 0.4 0.1 0.9 ]

关于machine-learning - Scikit-learn 多类朴素贝叶斯,概率为 y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20200956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com