Matlab图表可视化: 使用混淆矩阵分析机器学习模型性能
Matlab图表可视化: 使用混淆矩阵分析机器学习模型性能
在机器学习中,评估模型的性能至关重要。混淆矩阵是一种强大的工具,可以帮助我们理解模型在分类任务中的表现。本文将介绍如何使用Matlab将模型的性能可视化为图表,重点关注混淆矩阵的使用。
代码示例
以下Matlab代码展示了如何使用'subplot'和'confusionchart'函数创建一个2x2图表,并在每个子图中显示不同预测目标的混淆矩阵:matlabres = xlsread('位移角性能点预测数据库.xlsx');
cv = cvpartition(size(res, 1), 'HoldOut', 0.2);trainingData = res(cv.training,:);trainFeatures = trainingData(:, 1:11);trainOutputs = trainingData(:, end-6:end-3);testData = res(cv.test,:);testFeatures = testData(:, 1:11);testOutputs = testData(:, end-6:end);trainIdx = training(cv);testIdx = test(cv);
cv2 = cvpartition(sum(trainIdx), 'KFold', 5);
trainData = res(trainIdx, :);testData = res(testIdx, :);
trainFeatures = trainData(:, 1:11);trainOutputs = trainData(:, end-6:end-3);testFeatures = testData(:, 1:11);testOutputs = testData(:, end-6:end);
predictFeatures = double(res(:, 1:11));
NumTrees = 400;nLeaf=5;TreeMdl1 = TreeBagger(NumTrees, trainFeatures, trainOutputs(:,1), 'oobprediction', 'on', 'method', 'regression','minleaf', nLeaf); TreeMdl2 = TreeBagger(NumTrees, trainFeatures, trainOutputs(:,2), 'oobprediction', 'on', 'method', 'regression','minleaf', nLeaf); TreeMdl3 = TreeBagger(NumTrees, trainFeatures, trainOutputs(:,3), 'oobprediction', 'on', 'method', 'regression','minleaf', nLeaf); TreeMdl4 = TreeBagger(NumTrees, trainFeatures, trainOutputs(:,4), 'oobprediction', 'on', 'method', 'regression','minleaf', nLeaf);
SeitaY = trainOutputs(:, end-3);SeitaP = trainOutputs(:, end-3) + trainOutputs(:, end-2);SeitaU = trainOutputs(:, end-3) + trainOutputs(:, end-2) + trainOutputs(:, end-1);SeitaR = trainOutputs(:, end-3) + trainOutputs(:, end-2) + trainOutputs(:, end-1) + trainOutputs(:, end);outputMatrix = cat(2, SeitaY, SeitaP, SeitaU, SeitaR);
predictions1 = predict(TreeMdl1, testFeatures); predictions2 = predict(TreeMdl2, testFeatures); predictions3 = predict(TreeMdl3, testFeatures); predictions4 = predict(TreeMdl4, testFeatures); predictions=[predictions1,predictions2,predictions3,predictions4];predictionsY = predictions(:, end-3);predictionsP = predictions(:, end-3) + predictions(:, end-2);predictionsU = predictions(:, end-3) + predictions(:, end-2) + predictions(:, end-1);predictionsR = predictions(:, end-3) + predictions(:, end-2) + predictions(:, end-1) + predictions(:, end);
confusionMatrixY = confusionmat(testOutputs(:, end-3), predictionsY);confusionMatrixP = confusionmat(testOutputs(:, end-3) + testOutputs(:, end-2), predictionsP);confusionMatrixU = confusionmat(testOutputs(:, end-3) + testOutputs(:, end-2) + testOutputs(:, end-1), predictionsU);confusionMatrixR = confusionmat(testOutputs(:, end-3) + testOutputs(:, end-2) + testOutputs(:, end-1) + testOutputs(:, end), predictionsR);
figure;subplot(2,2,1);confusionchart(confusionMatrixY, 'RowSummary', 'row-normalized', 'ColumnSummary', 'column-normalized');title('Confusion Matrix Y');
subplot(2,2,2);confusionchart(confusionMatrixP, 'RowSummary', 'row-normalized', 'ColumnSummary', 'column-normalized');title('Confusion Matrix P');
subplot(2,2,3);confusionchart(confusionMatrixU, 'RowSummary', 'row-normalized', 'ColumnSummary', 'column-normalized');title('Confusion Matrix U');
subplot(2,2,4);confusionchart(confusionMatrixR, 'RowSummary', 'row-normalized', 'ColumnSummary', 'column-normalized');title('Confusion Matrix R');
代码解释
- 该代码首先加载数据并使用'cvpartition'函数将数据分成训练集和测试集。- 然后,它训练了四个决策树模型,用于预测不同的目标变量。- 接下来,使用训练好的模型对测试集进行预测,并计算混淆矩阵。- 最后,使用'subplot'函数创建了一个2x2的图表,并使用'confusionchart'函数在每个子图中显示了不同目标变量的混淆矩阵。
总结
通过使用Matlab的图表可视化功能,我们可以更直观地了解模型的性能。混淆矩阵是一种强大的工具,可以帮助我们识别模型的优势和劣势,并为进一步改进模型提供指导。
原文地址: https://www.cveoy.top/t/topic/kcX 著作权归作者所有。请勿转载和采集!