糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > auc计算 matlab代码 AUC计算

auc计算 matlab代码 AUC计算

时间:2019-12-17 09:18:38

相关推荐

auc计算 matlab代码 AUC计算

思路

为最终比较划分好测试集和不存在边集【全集1-train-test-对角元】,根据集合中非零元【即边的数目】构建比较矩阵test_rd【比较n次,随机生成n个值右取整作为抽取的要比较的边】,下一步对test的邻接矩阵赋值,相似性指标给予一个分值存入test_pre,然后依据判断条件【test==1】只取其中非零边【为什么?降低内存?】,对应位置的test_pre存入test_data,再把最初的test_rd构建成稀疏矩阵【?为什么不直接比】,最后test_rd 和 non_rd比大小,分别给n',n''计算AUC

triu

triu Extract upper triangular part.提取上三角

function [ auc ] = CalcAUC( train, test, sim, n )

%% 计算AUC,输入计算的相似度矩阵

sim = triu(sim - sim.*train);%只保留上三角,因为同一条边取一次就足够了对于CN来说

对应位置元素相乘,结果为训练集的相似度矩阵,这个不参与比较,因此要从sim中除掉

% 只保留测试集和不存在边集合中的边的相似度(自环除外)

non = 1 - train - test - eye(max(size(train,1),size(train,2)));

%1代表全集,全连通图,减去边集,减去对角元,剩下的为不存在边集

生成non【不存在边集】

test = triu(test);

non = triu(non);

% 分别取测试集和不存在边集合的上三角矩阵,用以取出他们对应的相似度分值??【点乘sim,即后边的test_pre = sim .* test】

test_num = nnz(test);

non_num = nnz(non);

test_rd = ceil( test_num * rand( 1, n));

n=5为例

因为testnum=1,而且向右取整

如果testnum=5时

% ceil是取大于等于的最小整数,n为抽样比较的次数

non_rd = ceil( non_num * rand( 1, n));

这里开始不太懂

test_pre = sim .* test;%具体某条边乘他的相似性作为预测分值

non_pre = sim .* non;%具体某条不存在边乘他的相似性作为预测分值

这里不懂

test_data = test_pre( test == 1 )'; %????【将test中非零元对应位置的test_pre值取出存入test_data】

% 行向量,test 集合存在的边的预测值

non_data = non_pre( non == 1 )';

% 行向量,nonexist集合存在的边的预测值

test_rd = test_data( test_rd );

non_rd = non_data( non_rd );

clear test_data non_data;

n1 = length( find(test_rd > non_rd) );

n2 = length( find(test_rd == non_rd));

第二个元素相等

auc = ( n1 + 0.5*n2 ) / n;

end

如果觉得《auc计算 matlab代码 AUC计算》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。