zoukankan      html  css  js  c++  java
  • MATLAB聚类有效性评价指标(外部 成对度量)

    MATLAB聚类有效性评价指标(外部 成对度量)

    作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

    更多内容,请看:MATLAB: Clustering Algorithms, MATLAB聚类有效性评价指标(外部)

    前提:数据的真实标签已知!TP:真阳性,FP:假阳性,FN:假阴性,TN:真阴性

    1. MATLAB程序

    function result = Evaluate(real_label,pre_label)
    % This fucntion evaluates the performance of a classification model by 
    % calculating the common performance measures: Accuracy, Sensitivity, 
    % Specificity, Precision, Recall, F-Measure, G-mean.
    % Input: ACTUAL = Column matrix with actual class labels of the training
    %                 examples
    %        PREDICTED = Column matrix with predicted class labels by the
    %                    classification model
    % Output: EVAL = Row matrix with all the performance measures
    % https://www.mathworks.com/matlabcentral/fileexchange/37758-performance-measures-for-classification
    
    idx = (real_label()==1);
    
    p = length(real_label(idx));
    n = length(real_label(~idx));
    N = p+n;
    
    tp = sum(real_label(idx)==pre_label(idx));
    tn = sum(real_label(~idx)==pre_label(~idx));
    fp = n-tn;
    fn = p-tp;
    
    tp_rate = tp/p;
    tn_rate = tn/n;
    
    accuracy = (tp+tn)/N; %准确度
    sensitivity = tp_rate;  %敏感性:真阳性率
    specificity = tn_rate; %特异性:真阴性率
    precision = tp/(tp+fp);  %精度
    recall = sensitivity;  %召回率
    f_measure = 2*((precision*recall)/(precision + recall));  %F-measure
    gmean = sqrt(tp_rate*tn_rate); 
    Jaccard=tp/(tp+fn+fp); %Jaccard系数
    
    result = [accuracy sensitivity specificity precision recall f_measure gmean Jaccard];
    fprintf('accuracy=%.4f, sensitivity=%.4f, specificity=%.4f, precision=%.4f, recall=%.4f, f_measure=%.4f, gmean=%.4f, Jaccard=%.4f
    ', ...
        accuracy, sensitivity, specificity, precision, recall, f_measure, gmean, Jaccard);

    2. 结果

    >> A = [1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3];
    >> B = [1 2 1 1 1 1 1 2 2 2 2 3 1 1 3 3 3];
    >> result = Evaluate(A,B)
    accuracy=0.7059, sensitivity=0.8333, specificity=0.6364, precision=0.5556, recall=0.8333, f_measure=0.6667, gmean=0.7282, Jaccard=0.5000
    
    result =
    
       0.705882352941177   0.833333333333333   0.636363636363636   0.555555555555556   0.833333333333333   0.666666666666667   0.728219081254419   0.500000000000000
    

    3. 参考

    [1] MATLAB聚类有效性评价指标(外部)

    [2] 相似性度量

    [3] Performance Measures for Classification

    [4] Gaussian field consensus论文解读及MATLAB实现

  • 相关阅读:
    Vim的分屏功能
    vim简明教程
    trk压力测试工具(测试tcp)
    浅谈ThreadPool 线程池
    压力测试的概念
    wrk 网站压力测试
    windows下vim中文乱码处理
    java 新创建的类要重写的方法
    多线程代码示例
    System.out.print实现原理猜解
  • 原文地址:https://www.cnblogs.com/kailugaji/p/11926253.html
Copyright © 2011-2022 走看看