我有一些包含用户名及其各自性别的数据。例如,我的数据列表中的一个条目可能如下所示:{用户:"abc123",性别:"M"}
对于每个用户名,我还会得到一袋文本、图像和附加到每个用户名的位置,尽管用户没有必要至少附加一个文本、一个图像和一个位置。
对于每个数据源,我可以将它们转换为特征向量,然后将其输入分类器。然后,我可以通过10倍交叉验证来确认分类器是否有效。
我想把所有分类器的一些输出组合起来,这样我就可以把它们输入到元分类器中,希望能提高准确性。
问题是,由于数据是不完整的,我不能简单地将每个数据源生成的所有向量组合起来,并将它们输入到一个分类器中。一些用户可能没有图像数据,或者其他用户可能没有位置数据。
我目前的想法是使用每个分类器为每个用户获得一些类别概率集,比如从每个数据源的分类器中获得[男性:0.75,女性:0.25],乘以所有类别的值,并使用最高值作为程序的预测类别。
因此,如果我为每个数据源(文本、图像、位置)有一个分类器,那么我总共有3个分类器。即使某些用户缺少一两个数据源,我仍然可以获得这些用户的类别概率集。
scikit learn是否有任何算法可以输出用户是某个性别的概率权重,而不仅仅是对其进行分类?
或者有其他算法可以满足我的需求吗?
谢谢你浏览我的文字墙!
我认为您可以在这里使用"天真贝叶斯"分类器。在这种情况下,类(M或F)概率是项的乘积,每个可用的特征集有一个项,您只需忽略(从乘积中排除)任何缺失的特征集。
理由如下。假设特征集是X1、X2、X3。每一个都是一个特征向量。朴素贝叶斯假设是,在给定类的情况下,特征集是独立的,即P(X1,X2,X3|C)=P(X1|C)P(X2|C)P(X3|C。(记住,这只是一个简化的假设,可能是真的,也可能不是真的!)当所有特征集都存在时,后验类概率仅为P(C|X1,X2,X3)=P(X1,X2、X3|C)P(C)/Z=P(X1|C)P(X2|C)普(X3|C。因此,为了利用这个公式,你需要为每个特征集建立一个密度模型;如果这种方法对你有意义,我们可以讨论密度模型。
现在,如果缺少一个功能集(比如X3)怎么办?这意味着我们需要计算P(C|X1,X2)=P(X1,X2|C)P(C)/Z。但请注意,P(X1-X2|C)=积分P(X1X2,X3|C)dX3=积分P。注意积分P(X3|C)dX3=1,因此P(X1,X2|C)=P(X1|C)P(X2|C