提问者:小点点

Scikit学习概率为y的多类朴素贝叶斯


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

我计划使用Scikit learn使用朴素贝叶斯分类器。我在Naiver_bayes中找不到合适的方法。py,它为每一个培训班计算概率。我需要一个分类器,它接受训练集每个类的输出概率。(即:y.shape=[n个样本,n个类])

如何处理数据集以应用朴素贝叶斯分类器?


共1个答案

匿名用户

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

在NB分类器和skLearning的情况下,我看到的最简单的程序是:

  1. 根据以下规则分割(复制)训练样本:给定(x,[p1,p2,…,pk])样本(其中pi是第i类的概率)创建人工训练样本:(x,1,p1),(x,2,p2)。。。,(x,k,pk)。所以你得到了k个新的观察值,每个“附加”到一个类,pi被当作样本权重,NB(在sklearn中)接受
  2. 使用fit(X,Y,样本权重)(其中X是你的X观察值的矩阵,Y是上一步的类矩阵,sample\u权重是上一步的pi矩阵)

例如,如果您的训练集由两点组成:

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

您将它们转换为:

  • ([01],1,0.6)

和NB一起训练

  • X=[[01]、[01]、[13]、[13]]
  • Y=[1,2,1,2]
  • sample_weights=[0.6 0.4 0.1 0.9]