用matlab计算一个给定两个矩阵的混淆矩阵

用matlab计算一个给定两个矩阵的混淆矩阵,matlab,matrix,octave,confusion-matrix,Matlab,Matrix,Octave,Confusion Matrix,我有两个Xval(预测值)和Sv(验证测试)矩阵,一个带有分类器输出数据,另一个带有相同样本的验证数据。每列表示预测值,例如[0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0。我想知道是否有可能以矢量化方式或内置函数计算混淆矩阵,两个矩阵的大小都是1

我有两个Xval(预测值)和Sv(验证测试)矩阵,一个带有分类器输出数据,另一个带有相同样本的验证数据。每列表示预测值,例如[0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0。我想知道是否有可能以矢量化方式或内置函数计算混淆矩阵,两个矩阵的大小都是12000x10。生成这两个矩阵的代码如下

load data;
load test;
[N, m] = size(X);
X = [ones(N, 1) X];
[Nt, mt] = size(Xt);
Xt = [ones(Nt, 1) Xt];
new_order = randperm(N);
X = X(new_order,: );
S = S(new_order,: );
part = 0.8;
Xtr = X(1: (part * N),: );
Xv = X((part * N + 1): N,: );
Str = S(1: (part * N),: );
Sv = S((part * N + 1): N,: );
v_c = [];
v_tx_acerto = [];
tx_acerto_max = 0;
c =  250;
w = (X'*X+c*eye(m+1))\X' * S; 
Xval = Xv*w;
for i=1:12000
    aux = Xval(i,:);
    aux(aux == max(aux)) = 1;
    aux(aux<1) = 0;
    Xval(i,:) = aux;
end
加载数据;
负荷试验;
[N,m]=尺寸(X);
X=[一(N,1)X];
[Nt,mt]=尺寸(Xt);
Xt=[一(Nt,1)Xt];
新订单=randperm(N);
X=X(新订单:);
S=S(新秩序:);
部分=0.8;
Xtr=X(1:(第N部分),:);
Xv=X((部分*N+1):N,:);
Str=S(1:(N部分),:);
Sv=S((部分*N+1):N,:);
v_c=[];
v_tx_acerto=[];
tx_acerto_max=0;
c=250;
w=(X'*X+c*眼(m+1))\X'*S;
Xval=Xv*w;
对于i=1:12000
aux=Xval(i,:);
辅助(辅助==最大(辅助))=1;

aux(aux有内置函数或。但是如果您想完全控制,您可以自己编写一个简单的函数,例如:

function [CMat_rel,CMat_abs] = ConfusionMatrix(Cprd,Cact)

Cprd_uq = unique(Cprd);
Cact_uq = unique(Cact);

NumPrd = length(Cprd_uq);
NumAct = length(Cact_uq);
% assert(NumPrd == NumAct)

% allocate memory
CMat_abs = NaN(NumPrd,NumAct);
CMat_rel = NaN(NumPrd,NumAct);
for j = 1:NumAct
    lgAct = Cact == Cact_uq(j);
    SumAct = sum(lgAct);
    for i = 1:NumAct
        lgPrd = Cprd == Cact_uq(i);

        Num = sum( lgPrd(lgAct) == true );
        CMat_abs(i,j) = Num;
        CMat_rel(i,j) = Num/SumAct;
    end
end
end

谢谢!但是我想计算一个这样的矩阵,给定两个预测和真的矩阵。像这样!以向量化的方式或使用一些内置函数,谢谢!这就是代码所做的(假设你预测向量)。否则,看看我命名的内置函数;)