首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB:单变量高斯朴素贝叶斯

MATLAB:单变量高斯朴素贝叶斯
EN

Stack Overflow用户
提问于 2012-10-04 06:11:21
回答 1查看 892关注 0票数 1

我正在尝试使用UCI机器学习团队发布的数据集来实现朴素贝叶斯分类器。我刚接触机器学习,并试图理解用于解决与我的工作相关的问题的技术,所以我认为最好先让理论得到理解。

我正在使用pima数据集(Link to Data - UCI-ML),我的目标是为K类问题构建朴素贝叶斯单变量高斯分类器(数据仅用于K=2)。我已经做了拆分数据,并计算每个类的平均值,标准差,每个类的先验,但在这之后,我有点卡住了,因为我不确定在这之后我应该做什么和如何做。我有种感觉我应该计算后验概率,

这是我的代码,我使用百分比作为向量,因为我希望看到当我将训练数据大小从80:20拆分增加时的行为。基本上,如果你通过10 20 30 40,它将从80:20分割中提取百分比,并使用80%中的10%作为训练。

代码语言:javascript
复制
function[classMean] = naivebayes(file, iter, percent)
dm = load(file);
    for i=1:iter
        idx = randperm(size(dm.data,1))
        %Using same idx for data and labels
        shuffledMatrix_data = dm.data(idx,:);
        shuffledMatrix_label = dm.labels(idx,:);
        percent_data_80 = round((0.8) * length(shuffledMatrix_data));
        %Doing 80-20 split
        train = shuffledMatrix_data(1:percent_data_80,:);
        test = shuffledMatrix_data(percent_data_80+1:length(shuffledMatrix_data),:);
        train_labels = shuffledMatrix_label(1:percent_data_80,:)
        test_labels = shuffledMatrix_data(percent_data_80+1:length(shuffledMatrix_data),:);
        %Getting the array of percents
        for pRows = 1:length(percent)
            percentOfRows = round((percent(pRows)/100) * length(train));
            new_train = train(1:percentOfRows,:)
            new_trin_label = shuffledMatrix_label(1:percentOfRows)
            %get unique labels in training
            numClasses = size(unique(new_trin_label),1)
            classMean = zeros(numClasses,size(new_train,2));
            for kclass=1:numClasses
                classMean(kclass,:) = mean(new_train(new_trin_label == kclass,:))
                std(new_train(new_trin_label == kclass,:))
                priorClassforK = length(new_train(new_trin_label == kclass))/length(new_train)
                priorClassforK_1 = 1 - priorClassforK
            end
        end
    end
end
EN

回答 1

Stack Overflow用户

发布于 2012-10-04 22:05:20

首先,基于频率计数计算每个类别标签的概率。对于给定的数据样本和数据集中的给定类,您可以计算每个特征的概率。之后,将样本中所有特征的条件概率彼此相乘,再乘以所考虑的类别标签的概率。最后,比较所有类标签的值,并选择概率最大的类标签(贝叶斯分类规则)。

要计算条件概率,您可以简单地使用正态分布函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12717607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档