精华内容
下载资源
问答
  • 如题,这两组数据的对应位置无关,属于统计学的范畴。譬如说,A、B两组数据中,A组数据符合正态分布,那么求B组数据属于A组数据的可能?这个应该用什么方法呢?
  • 叙述了传统的PCA方法在处理QAR数据相似性问题的不足,提出基于EROS的KPCA方法处理QAR数据之间的相似性问题。通过引入EROS方法而不需要对数据进行向量化,引入核矩阵对QAR数据进行主成分分析,可以有效降低数据的维数...
  • 这种度量可用于为两个轨迹、数据云或任何一组点之间的相似性分配标量分数。 此函数将返回两组点之间的 Hausdorff 距离。 有关 Hausdorff 距离的更多信息: http : //en.wikipedia.org/wiki/Hausdorff_distance
  • 相似性和相异性被许多数据挖掘技术所使用,如聚类、最近邻分类、异常检测等。不同组样本之间相似度是样本间差异程度数值度量,两组样本越相似,它们相异度就越低,相似度越高。通常用各种“距离”和“相关系数...
    copyright.gif(2017-04-03 银河统计)

    相似性和相异性被许多数据挖掘技术所使用,如聚类、最近邻分类、异常检测等。不同组样本之间的相似度是样本间差异程度的数值度量,两组样本越相似,它们的相异度就越低,相似度越高。通常用各种“距离”和“相关系数”作为相异度或相似度相异度度量方法。

    一、距离计算

    1、欧氏距离(Euclidean Distance)

    欧氏距离是一个经常采用的距离公式,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。二维平面上两点\(A(X_1,Y_1)\)\(B(X_2,Y_2)\)间的欧氏距离:

    \[D_{12}=\sqrt{(X_1-X_2)^2+(Y_1-Y_2)^2}\]

    三维空间两点\(A(X_1,Y_1,Z_1)\)\(B(X_2,Y_2,Z_2)\)间的欧氏距离:

    \[D_{12}=\sqrt{(X_1-X_2)^2+(Y_1-Y_2)^2+(Z_1-Z_2)^2}\]

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的欧氏距离:

    \[D_{ij}=\sqrt{(X_{i1}-X_{j1})^2+(X_{i2}-X_{j2})^2+\dots+(X_{im}-X_{jm})^2}=\sqrt{\sum\limits_{k=1}^m(X_{ik}-X_{jk})^2}\]

    现有10名学生六门课程成绩表(附表I)如下:

    序号概率论统计学英语政治数据挖掘线性代数
    1676373754491
    2746966948155
    3769393797127
    4653885856145
    5803948754152
    6728070888643
    7605091954264
    8774969508955
    9658950709985
    10784155897128

    计算第3名和第5名学生成绩之间的欧氏距离。

    解:第3名成绩向量为\(A(76,93,93,79,71,27)\)、第5名成绩向量为\(B(80,39,48,75,41,52)\),两者欧氏距离为,

    \[D_{35}=\sqrt{(76-80)^2+(93-39)^2+(93-48)^2+(79-75)^2+(71-41)^2+(27-52)^2}\approx 80.61\]

    欧氏距离函数代码

    ## 函数
        webTJ.Datamining.getOSDis(arr1,arr2);
    ##参数
        【arr1,arr2】
        【一维数组1,一维数组2】

    代码样例

    webTJ.clear();
    var oArr1=[76,93,93,79,71,27];
    var oArr2=[80,39,48,75,41,52];
    var oOSDis=webTJ.Datamining.getOSDis(oArr1,oArr2); 
    webTJ.display("欧氏距离 = "+oOSDis,0);

    运用距离公式计算所有不同组样本之间距离,即样本相似(距离)矩阵,综合反映了不同组样本之间的相似性或差异性。样本相似(距离)矩阵是分类、聚类等数据挖掘方法的基础。

    欧氏距离矩阵函数代码

    ## 函数
        webTJ.Datamining.getOSDiss(arrs);
    ##参数
        【arrs,i,j】
        【二维数组,第i个向量,第j个向量】

    代码样例

    webTJ.clear();
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oOSDiss=webTJ.Datamining.getOSDiss(oArrs); 
    webTJ.show(oOSDiss,2);

    2、曼哈顿距离(Manhattan Distance)

    曼哈顿距离也称为城市街区距离(City Block distance),想象在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是“曼哈顿距离”。

    MHDis.jpg

    曼哈顿距离由十九世纪的赫尔曼·闵可夫斯基所创词汇 ,是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和。图中红线代表曼哈顿距离,绿色代表欧氏距离,也就是直线距离,而蓝色和黄色代表等价的曼哈顿距离。

    可以定义曼哈顿距离为在欧几里德空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。例如在平面上,坐标\((X_1,Y_1)\)与坐标\((X_2,Y_2)\)的曼哈顿距离为:

    \[D_{12}=|X_1-X_2|+|Y_1-Y_2|\]

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的曼哈顿距离:

    \[D_{ij}=|X_{i1}-X_{j1}|+|X_{i2}-X_{j2}|+\dots+|X_{im}-X_{jm}|=\sum\limits_{k=1}^m|X_{ik}-X_{jk}|\]

    根据附表I中学生成绩表计算第3名和第5名学生成绩之间的曼哈顿距离。

    解:第3名成绩向量为\(A(76,93,93,79,71,27)\)、第5名成绩向量为\(B(80,39,48,75,41,52)\),两者曼哈顿距离为,

    \[D_{35}=|76-80|+|93-39|+|93-48|+|79-75|+|71-41|+|27-52|=162\]

    曼哈顿距离函数代码

    ## 函数
        webTJ.Datamining.getMHDDis(arr1,arr2);
    ##参数
        【arr1,arr2】
        【一维数组1,一维数组2】

    代码样例

    webTJ.clear();
    var oArr1=[76,93,93,79,71,27];
    var oArr2=[80,39,48,75,41,52];
    var oMHDDis=webTJ.Datamining.getMHDDis(oArr1,oArr2); 
    webTJ.display("曼哈顿距离 = "+oMHDDis,0);

    曼哈顿距离矩阵函数代码

    ## 函数
        webTJ.Datamining.getMHDDiss(arrs);
    ##参数
        【arrs】
        【二维数组】

    代码样例

    webTJ.clear();
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oMHDDiss=webTJ.Datamining.getMHDDiss(oArrs); 
    webTJ.show(oMHDDiss,2);

    3、切比雪夫距离(Chebyshev Distance)

    切比雪夫距离得名自俄罗斯数学家切比雪夫。在数学中,切比雪夫距离是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。例如在平面上,坐标\((X_1,Y_1)\)与坐标\((X_2,Y_2)\)的切比雪夫距离为:

    \[D_{12}=max(|X_1-X_2|,|Y_1-Y_2|)\]

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的切比雪夫距离:

    \[D_{ij}=max(|X_{i1}-X_{j1}|,|X_{i2}-X_{j2}|,\dots,|X_{im}-X_{jm}|)\]

    根据附表I中学生成绩表计算第3名和第5名学生成绩之间的切比雪夫距离。

    解:第3名成绩向量为\(A(76,93,93,79,71,27)\)、第5名成绩向量为\(B(80,39,48,75,41,52)\),两者切比雪夫距离为,

    \[D_{35}=max(|76-80|,|93-39|,|93-48|,|79-75|,|71-41|,|27-52|)=54\]

    切比雪夫距离函数代码

    ## 函数
        webTJ.Datamining.getCDDis(arr1,arr2);
    ##参数
        【arr1,arr2】
        【一维数组1,一维数组2】

    代码样例

    webTJ.clear();
    var oArr1=[76,93,93,79,71,27];
    var oArr2=[80,39,48,75,41,52];
    var oCDDis=webTJ.Datamining.getCDDis(oArr1,oArr2); 
    webTJ.display("切比雪夫距离 = "+oCDDis,0);

    切比雪夫距离矩阵函数代码

    ## 函数
        webTJ.Datamining.getCDDiss(arrs);
    ##参数
        【arrs】
        【二维数组】

    代码样例

    webTJ.clear();
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oCDDiss=webTJ.Datamining.getCDDiss(oArrs); 
    webTJ.show(oCDDiss,2);

    4、闵氏距离(Minkowski Distance)

    又叫做闵可夫斯基距离 ,是欧氏空间中的一种测度,被看做是欧氏距离的一种推广,欧氏距离是闵可夫斯基距离的一种特殊情况。例如在平面上,坐标\((X_1,Y_1)\)与坐标\((X_2,Y_2)\)的闵氏距离为:

    \[D_{12}=(|X_1-X_2|^p+|Y_1-Y_2|^p)^{\frac{1}{p}}\]

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的闵氏距离:

    \[D_{ij}=(|X_{i1}-X_{j1}|^p+|X_{i2}-X_{j2}|^p+\dots+|X_{im}-X_{jm}|^p)^{\frac{1}{p}}=(\sum\limits_{k=1}^m|X_{ik}-X_{jk}|^p)^{\frac{1}{p}}\]

    闵氏距离不是一种距离,而是一组距离的定义。该距离最常用的p是2和1,前者是欧几里得距离,后者是曼哈顿距离。当\(p\rightarrow\infty\)时,

    \[\lim_{p\to\infty}(\sum\limits_{k=1}^m|X_{ik}-X_{jk}|^p)^{\frac{1}{p}}=max(|X_{i1}-X_{j1}|,|X_{i2}-X_{j2}|,\dots,|X_{im}-X_{jm}|)\]

    \(p\rightarrow\infty\)时为切比雪夫距离。

    MSDis.jpg

    上图反映了不同闵氏距离系数p的几何意义。

    根据附表I中学生成绩表计算第3名和第5名学生成绩之间的闵可夫斯基距离(p=1.5)。

    解:第3名成绩向量为\(A(76,93,93,79,71,27)\)、第5名成绩向量为\(B(80,39,48,75,41,52)\),两者闵可夫斯基距离为,

    \[\small{D_{35}=(|76-80|^{1.5}+|93-39|^{1.5}+|93-48|^{1.5}+|79-75|^{1.5}+|71-41|^{1.5}+|27-52|^{1.5})^{\frac{1}{1.5}}=100.2667}\]

    闵氏距离函数代码

    ## 函数
        webTJ.Datamining.getMSDis(arr1,arr2,p);
    ##参数
        【arr1,arr2,p】
        【一维数组1,一维数组2,闵氏系数】

    代码样例

    webTJ.clear();
    var oArr1=[76,93,93,79,71,27];
    var oArr2=[80,39,48,75,41,52];
    var oP=1.5;
    var oMSDis=webTJ.Datamining.getMSDis(oArr1,oArr2,oP); 
    webTJ.display("闵氏距离 = "+oMSDis,0);

    闵氏距离矩阵函数代码

    ## 函数
        webTJ.Datamining.getMSDiss(arrs,p);
    ##参数
        【arrs,p】
        【二维数组,闵氏系数】

    代码样例

    webTJ.clear();
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oMSDiss=webTJ.Datamining.getMSDiss(oArrs,1.5); 
    webTJ.show(oMSDiss,2);

    5、马氏距离(Mahalanobis Distance)

    马氏距离由印度统计学家马哈拉诺斯(P.C.Mahalanobis)提出,表示数据的协方差距离,与欧式距离不同,它考虑了各指标之间相关性的干扰,而且不受各指标量纲的影响,但是它的缺点是夸大了变化微小的变量的作用。

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的马氏距离:

    \[D_{ij}=\sqrt{(X_i-X_j)^TS^{-1}(X_i-X_j)}\]

    式中S为样本协方差,\(X_i\)\(X_j\)为空间两点的向量。和前面的距离公式相比,马氏距离计算比较复杂,下面给出一个简单案例。

    现有样本集为:{(1,2),(3,4),(4,6),(2,3),(3,5)},求两样本{(1,2),(2,3)}的马氏距离。

    解、该样本集为二维变量5组样本。协方差公式为:

    \[ S=\frac{1}{n-1}\times \left[ \begin{matrix} L_{11} & L_{12} \\ L_{21} & L_{22} \end{matrix} \right] \]

    当样本集为m维变量时有,

    \[ S=\frac{1}{n-1}\times \left[ \begin{matrix} L_{11} & L_{12} & \dots & L_{1m}\\ L_{21} & L_{22} & \dots & L_{2m}\\ \dots & \dots & \dots & \dots \\ L_{m1} & L_{m2} & \dots & L_{mm} \end{matrix} \right] \]

    矩阵中,

    \[L_{ii}=\sum\limits_{k=1}^n(X_{ik}-\overline{X}_{i})^2=\sum\limits_{k=1}^nX_{ik}^2-\frac{1}{n}(\sum\limits_{k=1}^nX_{ik})^2\]

    \[L_{ij}=\sum\limits_{k=1}^n(X_{ik}-\overline{X}_{i})(X_{jk}-\overline{X}_{j})=\sum\limits_{k=1}^nX_{ik}X_{jk}-\frac{1}{n}(\sum\limits_{k=1}^nX_{ik})\times (\sum\limits_{k=1}^nX_{jk})\]

    根据样本数据计算得,

    \[n=5,\sum\limits_{k=1}^5X_{1k}=13,\sum\limits_{k=1}^5X_{2k}=20,\sum\limits_{k=1}^5X_{1k}^2=39,\sum\limits_{k=1}^5X_{2k}^2=90,\sum\limits_{k=1}^5X_{1k}X_{2k}=59,\]

    \[L_{11}=39-\frac{1}{5}\times 13^2=5.2,L_{22}=90-\frac{1}{5}\times 20^2=10,L_{12}=L_{21}=59-\frac{1}{5}\times 13\frac 20=7\]

    \[ S=\frac{1}{n-1}\times \left[ \begin{matrix} L_{11} & L_{12} \\ L_{21} & L_{22} \end{matrix} \right]= \frac{1}{5-1}\times \left[ \begin{matrix} 5.2 & 7 \\ 7 & 10 \end{matrix} \right]= \left[ \begin{matrix} 1.3 & 1.75 \\ 1.75 & 2.5 \end{matrix} \right] \]

    \[ S= \left[ \begin{matrix} 1.3 & 1.75 \\ 1.75 & 2.5 \end{matrix} \right]^{-1}= \left[ \begin{matrix} 13.3333 & -9.3333 \\ -9.3333 & 9.9333 \end{matrix} \right] \]

    \[ D_{ij}=\sqrt{(X_i-X_j)^TS^{-1}(X_i-X_j)} =(\left[ \begin{matrix} 2 - 1 \\ 3 - 2 \end{matrix} \right]^T\times \left[ \begin{matrix} 13.3333 & -9.3333 \\ -9.3333 & 9.9333 \end{matrix} \right]\times \left[ \begin{matrix} 2 - 1 \\ 3 - 2 \end{matrix} \right])^{\frac{1}{2}} \]
    \[ =(\left[ \begin{matrix} 1 \\ 1 \end{matrix} \right]^T\times \left[ \begin{matrix} 13.3333 & -9.3333 \\ -9.3333 & 9.9333 \end{matrix} \right]\times \left[ \begin{matrix} 1 \\ 1 \end{matrix} \right])^{\frac{1}{2}} =1.6^{\frac{1}{2}}=1.264911 \]

    马氏距离函数代码

    ## 函数
        webTJ.Datamining.getMAHDis(arr1,arr2,arrs);
    ##参数
        【arr1,arr2,arrs】
        【一维数组1,一维数组2,二维数组】

    代码样例

    webTJ.clear();
    var oSrrs=[[1,2],[3,4],[4,6],[2,3],[3,5]];
    var oArr1=[1,2];
    var oArr2=[2,3];
    var oMAHDis=webTJ.Datamining.getMAHDis(oArr1,oArr2,oSrrs);
    webTJ.display("马氏距离 = "+oMAHDis,0);
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    oArr1=[76,93,93,79,71,27];
    oArr2=[80,39,48,75,41,52];   
    oMAHDis=webTJ.Datamining.getMAHDis(oArr1,oArr2,oArrs); 
    webTJ.display("马氏距离 = "+oMAHDis,0);

    马氏距离矩阵函数代码

    ## 函数
        webTJ.Datamining.getMAHDiss(arrs);
    ##参数
        【arrs】
        【二维数组】

    代码样例

    webTJ.clear();
    var oSrrs=[[1,2],[3,4],[4,6],[2,3],[3,5]];
    var oMAHDiss=webTJ.Datamining.getMAHDiss(oSrrs);
    webTJ.show(oMAHDiss,2);
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oMAHDiss=webTJ.Datamining.getMAHDiss(oArrs); 
    webTJ.show(oMAHDiss,2);

    二、相似系数计算

    1、皮尔逊相关系数(Pearson Correlation coefficient)

    皮尔逊相关系数也称为简单相关系数,在统计学中,皮尔逊相关系数用于度量两个变量X和Y之间的相关(线性相关)程度,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高,负值表示负相关,正值表示正相关。在自然、社会科学领域中,该系数广泛用于度量两个变量之间的相关程度。

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的相关系数公式为:

    \[R_{ij}=\frac{\sum\limits_{k=1}^n(X_{ik}-\overline{X}_i)(X_{jk}-\overline{X}_j)}{\sqrt{(X_{ik}-\overline{X}_i)^2}\sqrt{(X_{jk}-\overline{X}_j)^2}}=\frac{\sum\limits X_{i}X_{j}-\frac{\sum\limits X_{i}\sum\limits X_{j}}{n}}{\sqrt{\sum\limits X_{i}^2-\frac{(\sum\limits X_{i})^2}{n}}\sqrt{\sum\limits X_{j}^2-\frac{(\sum\limits X_{j})^2}{n}}}=\frac{L_{ij}}{\sqrt{L_{ii}L_{jj}}}\]

    根据附表I中学生成绩表计算第3名和第5名学生成绩之间的曼哈顿距离。

    解:第3名成绩向量为\(A(76,93,93,79,71,27)\)、第5名成绩向量为\(B(80,39,48,75,41,52)\),皮尔逊相关系数,

    \[L_{33}=\sum\limits_{k=1}^mX_{3k}^2-\frac{1}{m}(\sum\limits_{k=1}^mX_{3k})^2=35085-\frac{1}{6}439^2=2964.8333\]
    \[L_{55}=\sum\limits_{k=1}^mX_{5k}^2-\frac{1}{m}(\sum\limits_{k=1}^mX_{5k})^2=20235-\frac{1}{6}335^2=1530.8333\]
    \[L_{35}=\sum\limits_{k=1}^mX_{3k}X_{5k}-\frac{1}{m}(\sum\limits_{k=1}^mX_{3k})(\sum\limits_{k=1}^mX_{5k})=24411-\frac{1}{6}439\times 335=-99.8333\]

    \[R_{35}=\frac{L_{35}}{\sqrt{L_{33}L_{55}}}=\frac{-99.8333}{\sqrt{2964.8333\times 1530.8333}}=-0.04686\]

    皮尔逊相关系数函数代码

    ## 函数
        webTJ.Datamining.getCORDis(arr1,arr2);
    ##参数
        【arr1,arr2】
        【一维数组1,一维数组2】

    代码样例

    webTJ.clear();    
    var oArr1=[76,93,93,79,71,27];
    var oArr2=[80,39,48,75,41,52];
    var oCORDis=webTJ.Datamining.getCORDis(oArr1,oArr2); 
    webTJ.display("皮尔逊相关系数 = "+oCORDis,0);

    皮尔逊相关系数矩阵函数代码

    ## 函数
        webTJ.Datamining.getMAHDiss(arrs);
    ##参数
        【arrs】
        【二维数组】

    代码样例

    webTJ.clear();
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oCORDiss=webTJ.Datamining.getCORDiss(oArrs); 
    webTJ.show(oCORDiss,2);

    2、斯皮尔曼秩相关系数(Spearman Rank Correlation)

    斯皮尔曼秩相关系数又称为斯皮尔曼等级相关(Spearman's correlation coefficient for ranked data)。主要用于解决顺序数据相关的问题。适用于两列变量,而且具有等级变量性质具有线性关系的资料。由英国心理学家、统计学家斯皮尔曼根据积差相关的概念推导而来。斯皮尔曼等级相关系数用来估计两个变量X、Y之间的相关性,其中变量间的相关性可以使用单调函数来描述。如果两个变量取值的两个集合中均不存在相同的两个元素,那么,当其中一个变量可以表示为另一个变量的很好的单调函数时(即两个变量的变化趋势相同),两个变量之间的等级相关\(\rho\)可以达到+1或-1。

    斯皮尔曼等级相关系数对数据条件的要求没有皮尔逊相关系数严格,只要两个变量的观测值是成对的等级评定资料,或者是由连续变量观测资料转化得到的等级资料,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的斯皮尔曼秩相关系数公式:

    \[\rho=1-\frac{6\sum\limits_{k=1}^m{d_k^2}}{n(n^2-1)}\]

    式中\(d\)\(X_{i}\)\(X_{j}\)的秩次差平方。

    根据附表I中学生成绩表计算第3名和第5名学生成绩之间的斯皮尔曼秩相关系数。

    解:第3名成绩向量为\(A(76,93,93,79,71,27)\)、第5名成绩向量为\(B(80,39,48,75,41,52)\),斯皮尔曼秩相关系数计算表如下:

    位置原始A原始B秩次A秩次B秩次差平方d
    17680419
    293391625
    39348244
    47975321
    57141550
    62752639
    合计48

    注:将向量A从大到小排序,排序后向量A中的76其序位为4,即秩次为4。向量A中有2个93,秩次为1和2。同样,在向量B,中,80的秩次为1,39的秩次为6

    \[\rho=1-\frac{6\sum\limits_{k=1}^m{d_k^2}}{n(n^2-1)}=1-\frac{6\times 48}{6(6^2-1)}=-0.37143\]

    斯皮尔曼秩相关系数函数代码

    ## 函数
        webTJ.Datamining.getSPKDis(arr1,arr2);
    ##参数
        【arr1,arr2】
        【一维数组1,一维数组2】

    代码样例

    webTJ.clear();
    var oArr1=[76,93,93,79,71,27];
    var oArr2=[80,39,48,75,41,52];
    var oSPKDis=webTJ.Datamining.getSPKDis(oArr1,oArr2); 
    webTJ.display("斯皮尔曼秩相关系数 = "+oSPKDis,0);

    斯皮尔曼秩相关系数矩阵函数代码

    ## 函数
        webTJ.Datamining.getSPKDiss(arrs);
    ##参数
        【arrs】
        【二维数组】

    代码样例

    webTJ.clear();
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oSPKDiss=webTJ.Datamining.getSPKDiss(oArrs); 
    webTJ.show(oSPKDiss,2);
    斯皮尔曼秩相关系数推论和证明
    设有序列数据25、38、42、36。 将数据分别正序和倒序排序,则有25、36、38、42和42、38、36、25。两组排序后数据的秩为4、3、2、1和1、2、3、4,秩差平方和为$(4-1)^2+(3-2)^2+(2-3)^2+(1-4)^2=20$。 将该样本按正序分为两个相同组,25、36、38、42和25、36、38、42,秩为4、3、2、1和4、3、2、1,秩差平方和为0。 如果将数据分为两组,第一组为正序、第二组为原序列或乱序,即42、38、36、25和原序列25、38、42、36,或42、38、36、25和乱序列36、42、38、25,不同对比组秩为4、3、2、1和4、2、1、3,或4、3、2、1和3、1、2、4,秩差平方和为 一般情况下,设有n个样本的序列数据,将数据分别正序和倒序排序后,秩差平方和S为$(4-4)^2+(3-2)^2+(2-1)^2+(1-3)^2=6$和$(4-3)^2+(3-1)^2+(2-2)^2+(1-4)^2=14$。

    推论一:将数据序列分别正序和倒序排序后,正序序列和倒序序列数据的秩差平方和大于任何不同排序间的秩差平方和。 $$S=(n-1)^2+(n-3)^2+(n-7)]^2+\dots=(n^2+1^2-2\times 1\times n)+(n^2+3^2-2\times 3\times n)+(n^2+5^2-2\times 5\times n)+\dots=n\times n^2+[1^2+3^2+5^2+\dots+(2n-1)^2]-2\times n\times [1+3+5+\dots+(2n-1)]=n^3+\frac{1}{3}n(4n^2-1)-2n\times n^2=\frac{1}{3}n(n^2-1)$$ 推论二:两个具有n个元素的不同数据序列,秩差平方和最小值为0、最大值为$S=\frac{1}{3}n(n^2-1)$。 斯皮尔曼秩相关系数: $$\rho=1-\frac{6\sum\limits_{k=1}^m{d_k^2}}{n(n^2-1)}=1-\frac{6\times S}{n(n^2-1)}$$ 秩差平方和取最小值0,斯皮尔曼秩相关系数为1;秩差平方和取最大值$S=\frac{1}{3}n(n^2-1)$,斯皮尔曼秩相关系数为-1。 (证毕)

    3、肯德尔秩相关系数(Kendall Rank Correlation)

    肯德尔秩相关系数是一个用来测量两个随机变量相关性的统计值。一个肯德尔检验是一个无参数假设检验,它使用计算而得的相关系数去检验两个随机变量的统计依赖性。肯德尔相关系数的取值范围在-1到1之间,当肯德尔相关系数为1时,表示两个随机变量拥有一致的等级相关性;当肯德尔相关系数为-1时,表示两个随机变量拥有完全相反的等级相关性;当肯德尔相关系数为0时,表示两个随机变量是相互独立的。

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的肯德尔秩相关系数公式:

    \[\tau=\frac{2P}{\frac{1}{2}n(n-1)}-1=\frac{4P}{n(n-1)}-1\]

    式中\(P\)\(X_{i}\)\(X_{j}\)\(X_{j}\)\(X_{i}\)的秩次贡献之和。对\(P\)值的理解参见下例:

    设有8名学生身高和体重统计数据如下表,

    学生ABCDEFGH
    身高(cm)175178165180173176170168
    体重(kg)7772687570806564

    计算肯德尔秩相关系数。

    解、通常情况下,人的身高和体重呈正比例关系,先将升高样本按大到小排序,

    学生ABCDEFGH
    身高(cm)180178176175173170168165
    体重(kg)7572807770656468

    对身高排序后可以看出身高最高者体重不是最重者,但是身材高者体重总体来说还是较重的,为进一步体现两者关系,计算两者的秩次和体重的秩次贡献,数据如下表:

    学生ABCDEFGH
    身高(cm)12345678
    体重(kg)34125786
    贡献($P_i$)54543100

    表中A学生身材最高(秩次为1),体重排名为3(秩次为1),在A学生后面所有其他学生体重中,A学生体重超过5个人,取贡献\(P_1=5\)。A学生身材最高,他的体重完全贡献分应该能达到7分。

    B学生身材第二高(秩次为2),体重排名为4(秩次为4),在B学生后面所有其他学生体重中,B学生体重超过4个人,取贡献\(P_2=4\)。其他学生体重贡献得分同理。

    体重贡献和:\(P=5+4+5+4+3+1+0+0=22\)。肯德尔秩相关系数为,

    \[\tau=\frac{2P}{\frac{1}{2}n(n-1)}-1=\frac{4P}{n(n-1)}-1=\frac{4\times 22}{8(8-1)}-1\approx 0.5714\]

    如果先对体重继续排序,结果如下:

    学生ABCDEFGH
    身高(cm)176175180178173165170168
    体重(kg)8077757270686564

    秩次和身高的秩次贡献,数据如下表:

    学生ABCDEFGH
    身高(cm)34125867
    体重(kg)12345678
    贡献($P_i$)54543010

    体重贡献和:\(P=5+4+5+4+3+1+0+0=22\)。肯德尔秩相关系数仍为\(0.5714\)

    肯德尔秩相关系数函数代码

    ## 函数
        webTJ.Datamining.getKNDDis(arrs,i,j);
    ##参数
        【arrs,i,j】
        【二维数组,第i个向量,第j个向量】

    代码样例

    webTJ.clear();
    var oArr1=[175,178,165,180,173,176,170,168];
    var oArr2=[77,72,68,75,70,80,65,64];
    var oKNDDis=webTJ.Datamining.getKNDDis(oArr1,oArr2); 
    webTJ.display("肯德尔秩相关系数 = "+oKNDDis,0);        
    var oArr1=[76,93,93,79,71,27];
    var oArr2=[80,39,48,75,41,52];
    oKNDDis=webTJ.Datamining.getKNDDis(oArr1,oArr2); 
    webTJ.display("肯德尔秩相关系数 = "+oKNDDis,0);

    肯德尔秩相关系数矩阵函数代码

    ## 函数
        webTJ.Datamining.getKNDDiss(arrs);
    ##参数
        【arrs】
        【二维数组】

    代码样例

    webTJ.clear();
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oKNDDiss=webTJ.Datamining.getKNDDiss(oArrs); 
    webTJ.show(oKNDDiss,2);

    4、余弦相似度(Cosine Similarity)

    几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中用这一概念来衡量样本向量之间的差异。夹角余弦的取值范围为[-1,1]。夹角余弦越大表
    示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。欧氏距离是最常见的距离度量,而余弦相似度则是最常见的相似度度量,很多的距离度量和相似度度量都是基于这两者的变形和衍生。

    设有m个n维向量\((X_{k1},X_{k2},\dots,X_{kn}), k=1,2,\dots,m\),向量\((X_{i1},X_{i2},\dots,X_{in})\)\((X_{j1},X_{j2},\dots,X_{jn})\)间的余弦相似度:

    \[\cos(\theta)=\frac{\sum\limits_{k=1}^nX_{ik}\times X_{jk}}{\sqrt{\sum\limits_{k=1}^nX_{ik}^2\times\sum\limits_{k=1}^nX_{jk}^2}}\]

    根据附表I中学生成绩表计算第3名和第5名学生成绩之间的余弦相似度。

    解:第3名成绩向量为\(A(76,93,93,79,71,27)\)、第5名成绩向量为\(B(80,39,48,75,41,52)\),两者余弦相似度为,

    \(\sum\limits_{k=1}^6X_{ik}\times X_{jk}=76\times 80+93\times 39+93\times 48+79\times 75+71\times 41+27\times 52=24411\)
    \(\sum\limits_{k=1}^6X_{ik}^2=76^2+93^2+93^2+79^2+71^2+27^2=35085\)
    \(\sum\limits_{k=1}^6X_{jk}^2=80^2+39^2+48^2+75^2+41^2+52^2=20235\)

    \[\cos(\theta)=\frac{\sum\limits_{k=1}^6X_{ik}\times X_{jk}}{\sqrt{\sum\limits_{k=1}^6X_{ik}^2\times\sum\limits_{k=1}^6X_{jk}^2}}=\frac{24411}{\sqrt{35085\times 20235}}=0.916164\]

    夹角余弦与向量的长度无关,如向量(1,2)和(2,4)的夹角余弦与向量(1,2)和(10,20)的相等。即,

    \[\frac{1\times 2+2\times 4}{\sqrt{(1^2+2^2)\times (2^2+4^2)}}=\frac{1\times 20+2\times 40}{\sqrt{(1^2+2^2)\times (10^2+20^2)}}=1\]

    借助三维坐标系来看下欧氏距离和余弦相似度的区别:

    cospic.png

    从图上可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加的是体现在方向上的差异,而不是位置。如果保持A点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦相似度cosθ是保持不变的,因为夹角不变,而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。
    根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。

    余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。因此没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,X
    和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这2个内容,而Y比较喜欢。余弦相似度对数值的不敏感导致了结果的误差,有时需要修正这种不合理性。

    调整余弦相似度,将所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。

    余弦相似度函数代码

    ## 函数
        webTJ.Datamining.getCOSDis(arr1,arr2);
    ##参数
        【arr1,arr2】
        【一维数组1,一维数组2】

    代码样例

    webTJ.clear();
    var oArr1=[76,93,93,79,71,27];
    var oArr2=[80,39,48,75,41,52];
    var oCOSDis=webTJ.Datamining.getCOSDis(oArr1,oArr2); 
    webTJ.display("余弦相似度 = "+oCOSDis,0);

    余弦相似度矩阵函数代码

    ## 函数
        webTJ.Datamining.getCOSDiss(arrs);
    ##参数
        【arrs】
        【二维数组】

    代码样例

    webTJ.clear();
    var oStr="67,63,73,75,44,91|74,69,66,94,81,55|76,93,93,79,71,27|65,38,85,85,61,45|80,39,48,75,41,52|72,80,70,88,86,43|60,50,91,95,42,64|77,49,69,50,89,55|65,89,50,70,99,85|78,41,55,89,71,28";
    var oArrs=webTJ.getArrs(oStr,"|",",");
    oArrs=webTJ.Array.getQuantify(oArrs);
    var oCOSDiss=webTJ.Datamining.getCOSDiss(oArrs); 
    webTJ.show(oCOSDiss,2);



    代码窗口

    注:可将例题实例代码复制、粘贴到“代码窗口”,点击“运行代码”获得计算结果(Ctrl+C:复制;Ctrl+V:粘贴;Ctrl+A:全选)

    运行代码

    运行效果

    转载于:https://www.cnblogs.com/cloudtj/p/6662375.html

    展开全文
  • 时间序列相似性度量领域中,现有的算法对...实验设置仿真数据和真实数据两组实验,对算法的相似性形变识别能力和鲁棒性进行验证。实验表明,此方法能有效地识别各类相似性形变,且在真实数据环境下具有较强的鲁棒性。
  • 时间序列相似性度量领域中,现有的算法对...实验设置仿真数据和真实数据两组实验,对算法的相似性形变识别能力和鲁棒性进行验证。实验表明,此方法能有效地识别各类相似性形变,且在真实数据环境下具有较强的鲁棒性。
  • 实验选取两组某烟草企业提供的烟叶光谱构建了光谱的相似性度量模型, 以相似性度量的准确率作为算法优劣的衡量标准。实验结果表明, GGLLE算法构建的相似性度量模型的准确率为93.3%, 明显优于主成分分析、栈式自编码器...
  • DataMining-相似性度量

    2017-04-05 22:20:00
    (2017-04-05 银河统计) ...通常用各种“距离”来衡量样本(观测值)的相似性,用相似系数来衡量指标(变量)的相似性。   原理详细讲解和网页(JS)计算实现,见银河统计相似性度量 - 数据挖掘算法。   R和...
    copyright.gif(2017-04-05 银河统计)

    相似性度量

      相似性和相异性被许多数据挖掘技术所使用,如聚类、最近邻分类、异常检测等。不同组样本之间的相似度是样本间差异程度的数值度量,两组样本越相似,它们的相异度就越低,相似度越高。通常用各种“距离”来衡量样本(观测值)的相似性,用相似系数来衡量指标(变量)的相似性。

      原理详细讲解和网页(JS)计算实现,见银河统计相似性度量 - 数据挖掘算法

      R和Python计算实现见下文。


    目录概览

    1) R语言实战

    • A) "距离"计算

      1、欧氏距离(Euclidean Distance)

      2、曼哈顿距离(绝对值距离)(Manhattan Distance)

      3、切比雪夫距离(Chebyshev Distance)

      4、闵氏距离(Minkowski Distance)

      5、马氏距离(Mahalanobis Distance)

    • B) 相似系数计算

      1、皮尔逊相关系数(Pearson Correlation Coefficient)

      2、斯皮尔曼秩相关系数(Spearman Rank Correlation)

      3、肯德尔秩相关系数(Kendall Rank Correlation)

      4、余弦相似度(Cosine Similarity)

    2) Python实战

    3) R语言函数封装

    • A) "距离"计算函数封装

    • B) 相似系数计算函数封装

    4) Python函数封装


    Data - 10名学生六门课程成绩表

    序号概率论统计学英语政治数据挖掘线性代数
    1676373754491
    2746966948155
    3769393797127
    4653885856145
    5803948754152
    6728070888643
    7605091954264
    8774969508955
    9658950709985
    10784155897128

    1) R语言实战[返回]

    A) "距离"计算


    1、欧氏距离(Euclidean Distance)

     Code

        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        # 第5名学生成绩
        B <- mydata[5,2:7]
        # 第3名和第5名学生成绩之间的欧氏距离
        x <- rbind(A, B)
        D35 <- dist(x, method = "euclidean", diag = FALSE, upper = FALSE)
        D35
        D35 <- dist(x, method = "euclidean", diag = TRUE, upper = TRUE)
        D35
        D35 <- dist(x, method = "euclidean", diag = FALSE, upper = TRUE)
        D35
        D35 <- dist(x, method = "euclidean", diag = TRUE, upper = FALSE)
        D35
        class(D35)
        cat("欧氏距离 =", D35, "\n")

     Result

        > 
        > options(digits=4)
        > mydata <- read.table("clipboard",header=T)
        > class(mydata)
        [1] "data.frame"
        > dim(mydata)
        [1] 10  7
        > head(mydata)
          序号 概率论 统计学 英语 政治 数据挖掘 线性代数
        1    1     67     63   73   75       44       91
        2    2     74     69   66   94       81       55
        3    3     76     93   93   79       71       27
        4    4     65     38   85   85       61       45
        5    5     80     39   48   75       41       52
        6    6     72     80   70   88       86       43
        > # 第3名学生成绩
        > A <- mydata[3,2:7]
        > A
          概率论 统计学 英语 政治 数据挖掘 线性代数
        3     76     93   93   79       71       27
        > # 第5名学生成绩
        > B <- mydata[5,2:7]
        > B
          概率论 统计学 英语 政治 数据挖掘 线性代数
        5     80     39   48   75       41       52
        > # 第3名和第5名学生成绩之间的欧氏距离
        > x <- rbind(A, B)
        > x
          概率论 统计学 英语 政治 数据挖掘 线性代数
        3     76     93   93   79       71       27
        5     80     39   48   75       41       52
        > D35 <- dist(x, method = "euclidean", diag = FALSE, upper = FALSE)
        > D35
              3
        5 80.61
        > D35 <- dist(x, method = "euclidean", diag = TRUE, upper = TRUE)
        > D35
              3     5
        3  0.00 80.61
        5 80.61  0.00
        > D35 <- dist(x, method = "euclidean", diag = FALSE, upper = TRUE)
        > D35
              3     5
        3       80.61
        5 80.61      
        > D35 <- dist(x, method = "euclidean", diag = TRUE, upper = FALSE)
        > D35
              3     5
        3  0.00      
        5 80.61  0.00
        > class(D35)
        [1] "dist"
        > cat("欧氏距离 =", D35, "\n")
        欧氏距离 = 80.61 
        > 

     Explanation

        1.读取"剪切板"中的数据到R变量mydata中。【首先,复制数据Data,然后,运行Code程序!】
    
            mydata <- read.table("clipboard",header=T)
    
        2.距离计算
            dist(x, method = "euclidean", diag = FALSE, upper = FALSE, p = 2) 
            其中
                x 是样本矩阵或者数据框;
                method表示计算哪种距离;
                diag为TRUE的时候给出对角线上的距离;
                upper为TURE的时候给出上三角矩阵上的值。
                
                method的取值有:
                    euclidean        欧几里德距离(欧氏距离)(Euclidean Distance) 
                    manhattan        曼哈顿距离(绝对值距离)(Manhattan Distance)
                    maximum          切比雪夫距离(Chebyshev Distance)
                    minkowski        闵可夫斯基距离(Minkowski Distance)(要指定p值)   
                    canberra         兰式距离

    2、曼哈顿距离(绝对值距离)(Manhattan Distance)

     Code

        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        # 第5名学生成绩
        B <- mydata[5,2:7]
        # 第3名和第5名学生成绩之间的曼哈顿距离
        x <- rbind(A, B)
        D35 <- dist(x, method = "manhattan", diag = FALSE, upper = FALSE)
        D35
        D35 <- dist(x, method = "manhattan", diag = TRUE, upper = TRUE)
        D35
        D35 <- dist(x, method = "manhattan", diag = FALSE, upper = TRUE)
        D35
        D35 <- dist(x, method = "manhattan", diag = TRUE, upper = FALSE)
        D35
        class(D35)
        cat("曼哈顿距离 =", D35, "\n")

     Result

        > 
        > D35 <- dist(x, method = "manhattan", diag = FALSE, upper = FALSE)
        > D35
            3
        5 162
        > class(D35)
        [1] "dist"
        > cat("曼哈顿距离 =", D35, "\n")
        曼哈顿距离 = 162 
        > 

    3、切比雪夫距离(Chebyshev Distance)

     Code

        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        # 第5名学生成绩
        B <- mydata[5,2:7]
        # 第3名和第5名学生成绩之间的切比雪夫距离
        x <- rbind(A, B)
        D35 <- dist(x, method = "maximum", diag = FALSE, upper = FALSE)
        D35
        D35 <- dist(x, method = "maximum", diag = TRUE, upper = TRUE)
        D35
        D35 <- dist(x, method = "maximum", diag = FALSE, upper = TRUE)
        D35
        D35 <- dist(x, method = "maximum", diag = TRUE, upper = FALSE)
        D35
        class(D35)
        cat("切比雪夫距离 =", D35, "\n")

     Result

        > 
        > D35 <- dist(x, method = "maximum", diag = FALSE, upper = FALSE)
        > D35
           3
        5 54
        > class(D35)
        [1] "dist"
        > cat("切比雪夫距离 =", D35, "\n")
        切比雪夫距离 = 54 
        > 

    4、闵氏距离(Minkowski Distance)

     Code

        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        # 第5名学生成绩
        B <- mydata[5,2:7]
        # 第3名和第5名学生成绩之间的闵可夫斯基距离
        x <- rbind(A, B)
        D35 <- dist(x, method = "minkowski", diag = FALSE, upper = FALSE, p = 1.5)
        D35
        D35 <- dist(x, method = "minkowski", diag = TRUE, upper = TRUE, p = 1.5)
        D35
        D35 <- dist(x, method = "minkowski", diag = FALSE, upper = TRUE, p = 1.5)
        D35
        D35 <- dist(x, method = "minkowski", diag = TRUE, upper = FALSE, p = 1.5)
        D35
        class(D35)
        cat("闵可夫斯基距离 =", D35, "\n")

     Result

        > 
        > D35 <- dist(x, method = "minkowski", diag = FALSE, upper = FALSE, p = 1.5)
        > D35
                3
        5 100.267
        > class(D35)
        [1] "dist"
        > cat("闵可夫斯基距离 =", D35, "\n")
        闵可夫斯基距离 = 100.267 
        > 

    5、马氏距离(Mahalanobis Distance)

     Code

        # 马氏距离函数
        Mahalanobis_Distance <- function(A,B,C){
          # A,B为【求距离】的向量 | C为【求样本协方差】的矩阵
          result <- sqrt((A-B) %*% solve(cov(C)) %*% t(t(A-B)))
          result
        }
        
        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        A
        # 第5名学生成绩
        B <- mydata[5,2:7]
        B
        # 所有学生的成绩
        C <- mydata[,-1]
        C
        # 第3名和第5名学生成绩之间的马氏距离
        A <- as.numeric(A)
        B <- as.numeric(B)
        C <- as.matrix(C)
        result <- Mahalanobis_Distance(A,B,C)
        cat("马氏距离 =", result, "\n")

     Result

        > 
        > A <- as.numeric(A)
        > B <- as.numeric(B)
        > C <- as.matrix(C)
        > result <- Mahalanobis_Distance(A,B,C)
        > cat("马氏距离 =", result, "\n")
        马氏距离 = 3.841 
        > 

    B) "相似系数"计算


    1、皮尔逊相关系数(Pearson Correlation Coefficient)

     Code

        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        A <- as.numeric(A)
        A
        # 第5名学生成绩
        B <- mydata[5,2:7]
        B <- as.numeric(B)
        B
        x <- data.frame(A,B)
        x
        result <- cor(x, method=c("pearson"))
        cat("皮尔逊相关系数 =", result[1,2], "\n")

     Result

        > 
        > result <- cor(x, method=c("pearson"))
        > cat("皮尔逊相关系数 =", result[1,2], "\n")
        皮尔逊相关系数 = -0.04686 
        > 

    2、斯皮尔曼秩相关系数(Spearman Rank Correlation)

     Code

        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        A <- as.numeric(A)
        A
        # 第5名学生成绩
        B <- mydata[5,2:7]
        B <- as.numeric(B)
        B
        x <- data.frame(A,B)
        x
        result <- cor(x, method=c("spearman"))
        cat("斯皮尔曼秩相关系数 =", result[1,2], "\n")

     Result

        >
        > result <- cor(x, method=c("spearman"))
        > cat("斯皮尔曼秩相关系数 =", result[1,2], "\n")
        斯皮尔曼秩相关系数 = -0.3189
        >

    3、肯德尔秩相关系数(Kendall Rank Correlation)

     Code

        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        A <- as.numeric(A)
        A
        # 第5名学生成绩
        B <- mydata[5,2:7]
        B <- as.numeric(B)
        B
        x <- data.frame(A,B)
        x
        result <- cor(x, method=c("kendall"))
        cat("肯德尔秩相关系数 =", result[1,2], "\n")

     Result

        >
        > result <- cor(x, method=c("kendall"))
        > cat("肯德尔秩相关系数 =", result[1,2], "\n")
        肯德尔秩相关系数 = -0.276
        >

    4、余弦相似度(Cosine Similarity)

     Code

        # 余弦相似度函数
        Cosine_Similarity <- function(A, B){
          result <- t(A)%*%B/sqrt(sum(A^2)*sum(B^2))
          result
        }
        
        options(digits=4)
        mydata <- read.table("clipboard",header=T)
        class(mydata)
        dim(mydata)
        head(mydata)
        # 第3名学生成绩
        A <- mydata[3,2:7]
        A <- as.numeric(A)
        A
        # 第5名学生成绩
        B <- mydata[5,2:7]
        B <- as.numeric(B)
        B
        result <- Cosine_Similarity(A,B)
        cat("余弦相似度 =", result, "\n")

     Result

        > 
        > result <- Cosine_Similarity(A,B)
        > cat("余弦相似度 =", result, "\n")
        余弦相似度 = 0.9162 
        > 

    2) Python实战[返回]

    3) R语言函数封装[返回]

    A) "距离"计算函数封装


        # euclidean        欧几里德距离(欧氏距离)(Euclidean Distance) 
        # manhattan        曼哈顿距离(绝对值距离)(Manhattan Distance)
        # maximum          切比雪夫距离(Chebyshev Distance)
        # minkowski        闵可夫斯基距离(Minkowski Distance)(要指定p值)   
        # mahalanobis      马氏距离(Mahalanobis Distance)
        
        Similarity_Distance <- function(A, B, oType, C=NULL, P=NULL){
          
          if(oType=='euclidean'){
            
            x <- rbind(A, B)
            result <- dist(x, method = "euclidean", diag = TRUE, upper = FALSE)
            
          }else if(oType=='manhattan'){
            
            x <- rbind(A, B)
            result <- dist(x, method = "manhattan", diag = TRUE, upper = FALSE)
            
          }else if(oType=='maximum'){
            
            x <- rbind(A, B)
            result <- dist(x, method = "maximum", diag = TRUE, upper = FALSE)
            
          }else if(oType=='minkowski'){
            
            x <- rbind(A, B)
            result <- dist(x, method = "minkowski", diag = TRUE, upper = FALSE, p = P)
            
          }else if(oType=='mahalanobis'){
            
            result <- sqrt((A-B) %*% solve(cov(C)) %*% t(t(A-B)))
            
          }else {
            
            stop("Error, Please Checking !!!")
            
          }
          
          result
          
        }
        
        Similarity_Distance(A, B, oType='euclidean')
        Similarity_Distance(A, B, oType='manhattan')
        Similarity_Distance(A, B, oType='maximum')
        Similarity_Distance(A, B, oType='minkowski', P=1.5)
        Similarity_Distance(A, B, oType='mahalanobis', C=C)

    B) 相似系数计算函数封装


        # pearson        皮尔逊相关系数(Pearson Correlation Coefficient)
        # spearman       斯皮尔曼秩相关系数(Spearman Rank Correlation)
        # kendall        肯德尔秩相关系数(Kendall Rank Correlation)
        # cosine         余弦相似度(Cosine Similarity)
        
        Similarity_coefficient <- function(A, B, oType){
        
          if(oType=='pearson'){
            
            x <- data.frame(A,B)
            result <- cor(x, method=c("pearson"))
            
          }else if(oType=='spearman'){
            
            x <- data.frame(A,B)
            result <- cor(x, method=c("spearman"))
            
          }else if(oType=='kendall'){
            
            x <- data.frame(A,B)
            result <- cor(x, method=c("kendall"))
            
          }else if(oType=='cosine'){
            
            result <- t(A)%*%B / sqrt(sum(A^2)*sum(B^2))
            
          }else {
            
            stop("Error, Please Checking !!!")
            
          }
          
          result
          
        }
        
        Similarity_coefficient(A, B, oType='pearson')
        Similarity_coefficient(A, B, oType='spearman')
        Similarity_coefficient(A, B, oType='kendall')
        Similarity_coefficient(A, B, oType='cosine')

    4) Python函数封装[返回]

    转载于:https://www.cnblogs.com/cloudtj/articles/6670990.html

    展开全文
  • 由于缺乏人体数据,我们无法确定人体总辐射量与人体死亡率之间的明确和精确的定量关系。 对人类数据的分析主要来自辐射事故,放射疗法和原子弹受害... 给出了两组这些方程式的差异和相似性。 特别说明了相似性的意义。
  •   图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度,直方图比较在早期的CBIR中是应用很常见的技术手段,通常会结合边缘处理、词袋等技术一起使用。...

    图像直方图比较

      图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度,直方图比较在早期的CBIR中是应用很常见的技术手段,通常会结合边缘处理、词袋等技术一起使用。其实现原理为:对输入的两张图像进行计算得到直方图H1与H2,将它们归一化到相同的尺度空间,然后通过计算H1与H2之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。OpenCV中提供的比较方法有四种:

    • Correlation 相关性比较
    • Chi - Square 卡方比较
    • Intersection 十字交叉性
    • Bhattacharyya distance 巴氏距离

    进行直方图比较的步骤如下:

    1. 首先把图像从RGB色彩空间转换到HSV色彩空间,使用函数为 cvtColor();
    2. 计算图像的H和S通道的直方图,然后归一化到[0~1]之间,使用的函数为 calcHist() 和 normalize();
    3. 进行直方图比较,使用的函数为 compareHist(),可使用上述四种比较方法之一进行比较,相关公式如下图: 在这里插入图片描述
      介绍下OpenCV中的API函数:
    CV_EXPORTS_W double compareHist( InputArray H1, InputArray H2, int method );
    

    其中,

    • H1 为直方图矩阵图像,一般需要先做归一化处理;
    • H2 为待比较的直方图矩阵图像,大小深度等与H1 相同;
    • method 为比较方式,总共有如上所示的4种;

    直方图比较的测试效果如下图所示:
    在这里插入图片描述
      这里我使用的是 Correlation 比较的方法,该方法对比较的两张图像有如下定义:-1 表示完全不匹配、0表示无关联、1表示完全匹配。从图中可以看出数字5的两幅图片匹配度很高为1,表示这两幅图几乎完全相似,而lena人像与猫的图像的匹配度很接近0,说明这两幅图像没有关联性。

    图像直方图反向投影

      图像直方图的反向投影是一种首先寻找某一特征的直方图模型,然后根据这个模型去寻找图像中是否存在这个特征的解决方案。反向投影储存的亮度值,代表测试图像中该像素属于某个特征的概率,也就是说,亮度值相同的位置,属于同一个特征的概率越大,亮起的地方概率更大,内部和边缘之间的阴影影响了检测的精度。反向投影的作用是在输入图像中寻找特定图像中最匹配的点或者区域,也就是定位模版图像在输入图像的位置。投影的结果以每个输入图像像素为起点的直方图对比结果,可以看作是单通道浮点型图像,或者是一个二维的概率数组集合。

    简单理解如下:
    假设一张 5 × 5 图像的灰度图矩阵为
    Image=[012344567889101112893114]Image= \left[ \begin{matrix} 0 &amp; 1 &amp; 2 &amp; 3 &amp; 4 \\ 4 &amp; 5 &amp; 6 &amp; 7 &amp; 8 \\ 8 &amp; 9 &amp; 10 &amp; 11 &amp; 12 \\ 8 &amp; 9 &amp; 3 &amp; 1 &amp; 14 \end{matrix} \right]

    假设 bin 指定的区间为[0,3],[4,7],[8,11],[12,15] 则该 5×5 图像灰度图的直方图为
    Histogram=[6572]Histogram= \left[ \begin{matrix} 6 &amp; 5 &amp; 7 &amp; 2 \\ \end{matrix} \right]

    该 5×5 图像的反向投影图为
    BackProjection=[66665555577777277662]Back_Projection= \left[ \begin{matrix} 6 &amp; 6 &amp; 6 &amp; 6 &amp; 5 \\ 5 &amp; 5 &amp; 5 &amp; 5 &amp; 7 \\ 7 &amp; 7 &amp; 7 &amp; 7 &amp; 2 \\ 7 &amp; 7 &amp; 6 &amp; 6 &amp; 2 \end{matrix} \right]

    例如位置(0,0)上的像素值为0,对应的bin为[0,3],所以反向直方图在该位置上的值这个bin的值6。可以看出,反向投影实际上是将原图像的256个灰度值替换为直方图各bin中对应的值,具体值为多少要看把0~255划分为多少个区间!这里只划分了4个bin。反向投影矩阵中某点的值就是它对应的原图像中的点所在区间的灰度直方图值。所以我们可以看出,一个区间点越多,在反向投影矩阵中就越亮。

    反向投影在OpenCV中的API函数为:

    CV_EXPORTS void calcBackProject( const Mat* images, int nimages,
                                     const int* channels, InputArray hist,
                                     OutputArray backProject, const float** ranges,
                                     double scale = 1, bool uniform = true );
    

    其中,

    • images 为输入图像,图像深度必须位CV_8U, CV_16U或CV_32F中的一种;
    • images 为输入图像的数量;
    • channels 为用于计算反向投影的通道列表,通道数必须与直方图维度相匹配;
    • hist 为输入的直方图,直方图的bin可以是密集(dense)或稀疏(sparse);
    • backProject 为目标反向投影输出图像,是一个单通道图像,与原图像有相同的尺寸和深度;
    • ranges为直方图中每个维度bin的取值范围;
    • scale 为输出反向投影的比例因子;
    • uniform 为直方图是否均匀分布(uniform)的标识符,有默认值true;

    反向投影的测试效果如下图所示:在这里插入图片描述

    图像直方图模板匹配

      从一幅图像中寻找和模版最相似的部分的技术叫做模版匹配,但并不是基于直方图的匹配技术,而是类似图像卷积操作一样,通过在输入图像上滑动模板图像,对实际的图像块和输入图像进行匹配的一种匹配方法。

    OpenCV中的API函数为:

    CV_EXPORTS_W void matchTemplate( InputArray image, InputArray templ,
                                     OutputArray result, int method, InputArray mask = noArray() );
    

    其中,

    • image 为 输入图像;
    • templ 为模版图像;
    • result 为匹配结果的映射图像;
    • method 为指定的匹配方法;
    • mask 为图像掩模,默认为0;
      这里重点说明下 method 的类型:
      在这里插入图片描述
      cv::TM_SQDIFF:该方法使用平方差进行匹配,因此最佳的匹配结果在结果为0处,值越大匹配结果越差。
      在这里插入图片描述
      cv::TM_SQDIFF_NORMED:该方法使用归一化的平方差进行匹配,最佳匹配也在结果为0处。
      在这里插入图片描述
      cv::TM_CCORR:相关性匹配方法,该方法使用源图像与模板图像的卷积结果进行匹配,因此,最佳匹配位置在值最大处,值越小匹配结果越差。
      cv::TM_CCORR_NORMED:归一化的相关性匹配方法,与相关性匹配方法类似,最佳匹配位置也是在值最大处。

    在这里插入图片描述
    cv::TM_CCOEFF:相关性系数匹配方法,该方法使用源图像与其均值的差、模板与其均值的差二者之间的相关性进行匹配,最佳匹配结果在值等于1处,最差匹配结果在值等于-1处,值等于0直接表示二者不相关。
    在这里插入图片描述
    cv::TM_CCOEFF_NORMED:归一化的相关性系数匹配方法,正值表示匹配的结果较好,负值则表示匹配的效果较差,也是值越大,匹配效果也好。

    模板匹配的测试效果如下图所示:
    在这里插入图片描述

    代码实现

    // HistogramCompare.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    #include "pch.h"
    #include <iostream>
    #include <opencv2/opencv.hpp>
    
    using namespace cv;
    using namespace std;
    
    //直方图比较
    void HistogramCompare(void)
    {
    	Mat src1 = imread("figure1.jpg");
    	Mat src2 = imread("figure2.jpg");
    	Mat src3 = imread("human.jpg");
    	Mat src4 = imread("cat.jpg");
    
    	namedWindow("input1", WINDOW_AUTOSIZE);
    	namedWindow("input2", WINDOW_AUTOSIZE);
    	namedWindow("input3", WINDOW_AUTOSIZE);
    	namedWindow("input4", WINDOW_AUTOSIZE);
    
    	imshow("input1", src1);
    	imshow("input2", src2);
    	imshow("input3", src3);
    	imshow("input4", src4);
    
    	Mat hsv1, hsv2, hsv3, hsv4;
    	cvtColor(src1, hsv1, COLOR_BGR2HSV);
    	cvtColor(src2, hsv2, COLOR_BGR2HSV);
    	cvtColor(src3, hsv3, COLOR_BGR2HSV);
    	cvtColor(src4, hsv4, COLOR_BGR2HSV);
    
    	int h_bins = 60; int s_bins = 64;
    	int histSize[] = { h_bins, s_bins };
    	float h_ranges[] = { 0, 180 };
    	float s_ranges[] = { 0, 256 };
    	const float* ranges[] = { h_ranges, s_ranges };
    	int channels[] = { 0, 1 };
    	Mat hist1, hist2, hist3, hist4;
    	calcHist(&hsv1, 1, channels, Mat(), hist1, 2, histSize, ranges, true, false);
    	calcHist(&hsv2, 1, channels, Mat(), hist2, 2, histSize, ranges, true, false);
    	calcHist(&hsv3, 1, channels, Mat(), hist3, 2, histSize, ranges, true, false);
    	calcHist(&hsv4, 1, channels, Mat(), hist4, 2, histSize, ranges, true, false);
    
    	normalize(hist1, hist1, 0, 1, NORM_MINMAX, -1, Mat());
    	normalize(hist2, hist2, 0, 1, NORM_MINMAX, -1, Mat());
    	normalize(hist3, hist3, 0, 1, NORM_MINMAX, -1, Mat());
    	normalize(hist4, hist4, 0, 1, NORM_MINMAX, -1, Mat());
    
    	double src1_src2 = compareHist(hist1, hist2, HISTCMP_CORREL);
    	double src3_src4 = compareHist(hist3, hist4, HISTCMP_CORREL);
    	printf("Method_HISTCMP_CORREL: src1_src2: %f, src3_src4: %f, \n", src1_src2, src3_src4);
    }
    
    //反向投影
    void BackProjection(void)
    {
    	Mat srcImage = imread("cat.jpg");
    	Mat hsvImage, backProjImage;
    	cvtColor(srcImage, hsvImage, COLOR_BGR2HSV);
    
    	int h_bins = 32; int s_bins = 32;
    	int histSize[] = { h_bins, s_bins };
    	float h_ranges[] = { 0, 180 };
    	float s_ranges[] = { 0, 256 };
    	const float* ranges[] = { h_ranges, s_ranges };
    	int channels[] = { 0, 1 };
    	Mat hist;
    	calcHist(&hsvImage, 1, channels, Mat(), hist, 2, histSize, ranges, true, false);
    	normalize(hist, hist, 0, 255, NORM_MINMAX, -1, Mat());
    	calcBackProject(&hsvImage, 1, channels, hist, backProjImage, ranges, 1.0);
    
    	namedWindow("src", WINDOW_AUTOSIZE);
    	namedWindow("backProjection", WINDOW_AUTOSIZE);
    
    	imshow("src", srcImage);
    	imshow("backProjection", backProjImage);
    }
    
    //模板匹配
    void TemplateMatch(void)
    {
    	Mat SrcImage, TemplateImage, ResultImage;
    	SrcImage = imread("cat.jpg");
    	TemplateImage = imread("Template.jpg");
    	matchTemplate(SrcImage, TemplateImage, ResultImage, TM_CCOEFF_NORMED);
    	normalize(ResultImage, ResultImage, -1, 1, NORM_MINMAX);
    	double MinVal = 0, MaxVal = 0;
    	Point MinLoc(0, 0), MaxLoc(0, 0);
    	minMaxLoc(ResultImage, &MinVal, &MaxVal, &MinLoc, &MaxLoc);
    	circle(SrcImage, Point(MaxLoc.x + TemplateImage.cols / 2, MaxLoc.y + TemplateImage.rows / 2), 30, Scalar(0, 0, 255), 2, 8);
    
    	namedWindow("src", WINDOW_AUTOSIZE);
    	namedWindow("Template", WINDOW_AUTOSIZE);
    	namedWindow("Result_CCOEFF_NORMED", WINDOW_AUTOSIZE);
    
    	imshow("src", SrcImage);
    	imshow("Template", TemplateImage);
    	imshow("Result_CCOEFF_NORMED", ResultImage);
    
    }
    
    //获取ROI图片
    void GetROIImage(void)
    {
    	Mat SrcImage = imread("cat.jpg");
    	int Height = SrcImage.rows;
    	int Width = SrcImage.cols;
    	Rect rect(Width / 2 - 40, Height / 6 - 40, 100, 100);
    	Mat ROIImage = SrcImage(rect);
    	//ROIImage.setTo(Scalar(50, 0, 0));
    	namedWindow("src", WINDOW_AUTOSIZE);
    	namedWindow("roi", WINDOW_AUTOSIZE);
    	imshow("roi", ROIImage);
    	imshow("src", SrcImage);
    	//imwrite("Template.jpg", ROIImage);
    }
    
    int main(int artc, char** argv) 
    {	
    	//GetROIImage();
    	//HistogramCompare();
    	//BackProjection();
    	TemplateMatch();
    
    	while (true)
    	{
    		if (waitKey(10) == 27)
    			break;
    	}
    	destroyAllWindows();
    	return 0;
    }
    
    
    展开全文
  • 图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度。 1.2 函数原型 void cv::calcHist (const Mat * images, int nimages, const int * channels, Input...
  • 图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度,直方图比较在早期的CBIR中是应用很常见的技术手段,通常会结合边缘处理、词袋等技术一起使用。 相关API: ...
  • Opencv-图像直方图比较

    2019-09-09 16:33:30
    图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度,直方图比较在早期的CBIR中是应用很常见的技术手段,通常会结合边缘处理、词袋等技术一起使用。 OpenCV中直...
  • 图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度,直方图比较在早期的CBIR中是应用很常见的技术手段,通常会结合边缘处理、词袋等技术一起使用。 OpenCV中直...
  • 图像直方图比较,就是比较两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度,直方图比较在早期的CBIR(基于内容的图像检索Content-based image retrieval)是较常应用的技术手段,通常...
  • 该方法避免了对激光数据进行特征提取以及点对点的对应,仅以预处理后激光数据的核密度估计作为定位依据,以核相关方法作为比较相邻两组激光数据相似性的度量准则,并在此基础上建立以旋转平移向量为参数的自定位目标...
  • 相似性度量--Pearson相关系数

    千次阅读 2016-06-28 13:44:32
    pearson是一个介于-1和1之间值,用来描述两组线性的数据一同变化移动趋势。 当两个变量线性关系增强时,相关系数趋于1或-1;当一个变量增大,另一个变量也增大时,表明它们之间是正相关,相关系数大于0;...
  • 双滤波模式(DFP)算法利用样本模式相似性来优化BCI分类特征——运动相关电位(MRPs)特征空间(即电极位置)和时间投影方向,使得映射后异类样本模式差异性与同类相似性的比值最大化。该算法考虑MRPs特征对时间...
  • 基于累积失效模型(CEM),对两组指数产品联合II型截尾数据进行综合分析.首先,计算未知参数极大似然估计(MLE),并利用矩母函数(MGF)建立其条件概率分布.然后,采用两种方法,基于概率分布精确分析方法和...
  • 当实验对象符合实验条件后,从两组雄鼠身上分别取出它们颈动脉进行离体灌注实验,采集所需的数据,算出所有老鼠各个伸长比下动脉血管顺应值,并用统计学方法检测两组之间顺应性的差异,实验结果表明鼾症导致SD鼠...
  • IBM SPSS Statistics配对样本T检验与独立样本T检验相似,都可用于对比两个组均值差异,不同是,配对样本T检验对比两组变量平均值,计算是单个个案在两个变量差异,检验其平均差值是否有差异,...
  • 根据AFLP图谱计算了不同样品间遗传距离(D)和相似性系数(G5).家鸭品种间遗传距离在0.331~0.589范围内,绿头鸭、斑嘴鸭与家鸭品种(系)间遗传距离分别在0.298~0.520和0.316~0.522之间.方差分析表明两组数据...
  • 印刷错误或数据元素变化(仅举几例)使在两组数据之间建立相似性变得困难。 在这种情况下,与其使用精确的字符串比较,不如使用一种方法来识别两个字符串的相似程度至关重要。 相似度函数可以满足某些数据集的需求...
  • 将高光谱数据中每个波段光谱分量看作一个一维向量,使用K-L散度表示其相互之间信息量,选出信息量大且相似性最小波段组合;根据每个波段中不同地物光谱可分性距离计算,得到可分性较大波段组合;将两组...
  • 本文提出改进遗传算法通过在选择操作前对种群进行相似性检查来保持群体多样性, 解决进化种群早熟问题, 提出了与相似率和迭代次数相关变异概率公式来保持种群多样性和算法收敛性, 通过在UCIWINE和IRIS两组数据...
  • 结果:研究组平均年龄(±SD)几乎相似(28.8±8.4 vs. 27.4±7.2岁,p = 0.486)。 在A组中,有83.33%患者发生了术后尿道狭窄,无一例出现尿失禁,20.83%患者出现了勃起功能障碍。 另一方面,在B组中,...
  • 关于多属性群体决策问题中,很多文献考虑使用距离函数来构建属性权重或专家权重,但距离函数只考虑了两组数据(或模糊数)距离,没有考虑形状等特征影响,降低了距离函数对于偏好信息或权重信息识别,如...
  • 集体智慧编程学习笔记-推荐系统

    千次阅读 2016-11-02 16:58:38
    相似性度量 在对比每个人之间在品味方面的相似程度,一般通过计算相似度评价值。在书中给出了2中评价体系:欧氏距离和pearson相关度。欧氏距离:即两点间的距离!pearson相关度:判断两组数据与某一直线的拟合程度...

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
关键字:

两组数据的相似性