朴素贝叶斯分类的MATLAB代码
时间: 2023-09-03 16:15:35 浏览: 58
以下是一个简单的朴素贝叶斯分类器的MATLAB代码示例:
```matlab
% 加载数据
load iris_dataset;
% 划分训练集和测试集
cv = cvpartition(species,'Holdout',0.3);
Xtrain = meas(cv.training,:);
Ytrain = species(cv.training,:);
Xtest = meas(cv.test,:);
Ytest = species(cv.test,:);
% 训练朴素贝叶斯分类器
nb = fitNaiveBayes(Xtrain,Ytrain);
% 预测测试集
Ypred = nb.predict(Xtest);
% 计算精度
accuracy = sum(Ypred == Ytest)/numel(Ytest);
% 输出精度
fprintf('Accuracy = %.2f%%\n', accuracy*100);
```
这段代码使用鸢尾花数据集进行分类。首先将数据集划分为训练集和测试集,然后使用`fitNaiveBayes`函数训练朴素贝叶斯分类器。最后,使用`predict`函数预测测试集的标签,并计算分类器的精度。
相关问题
朴素贝叶斯分类器代码matlab
以下是一个简单的朴素贝叶斯分类器的 Matlab 代码示例:
```matlab
% 数据集,包含 6 个样本和 2 个特征
X = [1 1; 1 2; 2 1; 2 2; 3 3; 3 4];
Y = [0; 0; 0; 1; 1; 1];
% 计算先验概率
py0 = sum(Y == 0) / length(Y);
py1 = sum(Y == 1) / length(Y);
% 计算条件概率
mu_x_y0 = mean(X(Y == 0, :));
mu_x_y1 = mean(X(Y == 1, :));
sigma_x_y0 = cov(X(Y == 0, :));
sigma_x_y1 = cov(X(Y == 1, :));
% 预测新样本
x_new = [2.5 2.5];
p_x_y0 = mvnpdf(x_new, mu_x_y0, sigma_x_y0);
p_x_y1 = mvnpdf(x_new, mu_x_y1, sigma_x_y1);
p_y0_x = p_x_y0 * py0 / (p_x_y0 * py0 + p_x_y1 * py1);
p_y1_x = p_x_y1 * py1 / (p_x_y0 * py0 + p_x_y1 * py1);
fprintf('预测结果为 %d\n', p_y1_x > p_y0_x);
```
该代码使用多元正态分布估计条件概率,并通过贝叶斯定理计算后验概率来预测新样本的类别。
训练朴素贝叶斯模型 MATLAB代码 举例
好的,我可以回答你的问题。下面是一个简单的训练朴素贝叶斯模型的 MATLAB 代码示例:
```matlab
%% 加载数据
load fisheriris
%% 将数据分为训练集和测试集
indices = crossvalind('Kfold', species, 10);
training_features = meas(indices~=1,:);
training_labels = species(indices~=1,:);
test_features = meas(indices==1,:);
test_labels = species(indices==1,:);
%% 训练朴素贝叶斯模型
NBModel = fitcnb(training_features, training_labels);
%% 在测试集上评估模型
predictions = predict(NBModel, test_features);
accuracy = sum(predictions == test_labels)/length(test_labels);
disp(['模型的准确率为:', num2str(accuracy)])
```
这个代码示例中,我们首先加载了 iris 数据集,并将其分为了训练集和测试集。然后,我们使用 `fitcnb` 函数训练了一个朴素贝叶斯分类器,并使用 `predict` 函数在测试集上进行了预测。最后,我们计算了模型的准确率并显示了结果。
请注意,这只是一个简单的示例代码,实际中您可能需要根据您的具体需求进行修改。