confusionchart(confMat, newLabels);怎么在画出图的矩阵里面显示数值
时间: 2023-07-15 14:11:46 浏览: 155
你可以在 `confusionchart()` 函数调用之前使用 `confusionchartOptions()` 函数设置选项。以下是一些可用选项:
- `'Normalization'`:矩阵的归一化方式。默认值为 `'row-normalized'`。
- `'RowSummary'`:行总结统计信息的显示方式。默认值为 `'row-normalized'`,可以设置为 `'row-normalized','row-count','none'`。
- `'ColumnSummary'`:列总结统计信息的显示方式。默认值为 `'column-normalized'`,可以设置为 `'column-normalized','column-count','none'`。
- `'ShowText'`:是否在矩阵的每个单元格中显示数字。默认为 `true`。
例如,要在矩阵中显示数字,可以使用以下代码:
```matlab
options = confusionchartOptions('ShowText',true);
confusionchart(confMat,newLabels,options);
```
这将在绘制矩阵时显示数字。
相关问题
把它用python改写:clear; dir=('pictures'); testdir=('testPictures'); trainingSet = imageSet(dir,'recursive'); testSet = imageSet(testdir,'recursive'); [trainingFeatures,trainingLabels,testFeatures,testLabels]=extractFeature(trainingSet,testSet); %% %训练一个svm分类器 %fitcecoc 使用1对1的方案 classifier = fitcecoc(trainingFeatures, trainingLabels); save classifier.mat classifier; % 使用测试图像的特征向量预测样本标签 predictedLabels = predict(classifier, testFeatures); %% 评估分类器 %使用没有标签的图像数据进行测试,生成一个混淆矩阵表明分类效果 confMat=confusionmat(testLabels, predictedLabels) % accuracy=(confMat(1,1)/sum(confMat(1,:))+confMat(2,2)/sum(confMat(2,:))+... % confMat(3,3)/sum(confMat(3,:))+confMat(4,4)/sum(confMat(4,:)))/4 accuracy=(confMat(1,1)/sum(confMat(1,:))+confMat(2,2)/sum(confMat(2,:))+... confMat(3,3)/sum(confMat(3,:)))/3
以下是Python版的代码:
```python
import os
import numpy as np
from sklearn import svm
from sklearn.metrics import confusion_matrix
dir = 'pictures'
testdir = 'testPictures'
# 获取训练集和测试集
trainingSet = []
trainingLabels = []
testSet = []
testLabels = []
for root, dirs, files in os.walk(dir):
for file in files:
if file.endswith('.jpg'):
trainingSet.append(os.path.join(root, file))
trainingLabels.append(os.path.basename(root))
for root, dirs, files in os.walk(testdir):
for file in files:
if file.endswith('.jpg'):
testSet.append(os.path.join(root, file))
testLabels.append(os.path.basename(root))
# 提取特征
def extract_feature(data):
features = []
for item in data:
# TODO: 提取特征,这里用随机生成的特征代替
feature = np.random.rand(10)
features.append(feature)
return features
trainingFeatures = extract_feature(trainingSet)
testFeatures = extract_feature(testSet)
# 训练分类器
clf = svm.SVC(decision_function_shape='ovr')
clf.fit(trainingFeatures, trainingLabels)
# 保存分类器
from joblib import dump
dump(clf, 'classifier.joblib')
# 预测样本标签
predictedLabels = clf.predict(testFeatures)
# 评估分类器
confMat = confusion_matrix(testLabels, predictedLabels)
accuracy = (confMat[0, 0] / np.sum(confMat[0, :]) + confMat[1, 1] / np.sum(confMat[1, :]) + confMat[2, 2] / np.sum(confMat[2, :])) / 3
print('Accuracy: %.2f%%' % (accuracy * 100))
```
(confMat(1,1)/sum(confMat(1,:))+confMat(2,2)/sum(confMat(2,:))+... confMat(3,3)/sum(confMat(3,:))+confMat(4,4)/sum(confMat(4,:))+confMat(5,5)/sum(confMat(5,:))+confMat(6,6)/sum(confMat(6,:))+... confMat(7,7)/sum(confMat(7,:))+confMat(8,8)/sum(confMat(8,:))+confMat(9,9)/sum(confMat(9,:)))/9
这段代码是用来计算混淆矩阵的平均准确率的假设混淆矩阵为confMat,它是一个9x9的矩阵,表示9个类别的分类结果。代码中首先计算了每个类别的准确率,通过将对角线上的元素(即分类正确的样本数)除以对应行的总样本数来计算。然后将这些准确率相加,并除以类别数(9)来计算平均准确率。最后返回了平均准确率的值。
阅读全文