表A
ID   L   TF
A    1    0
A    2    0  
A    3    0
A    4    1
A    5    1
A    6    1
B    1    1
B    2    1
B    3    1
B    4    0
B    5    0
B    6    0表B
ID   L   TF
I    1    1
I    2    1
I    3    1
I    4    0
I    5    0
I    6    1
K   1    0
K   2    0
K   3    0
K   4    1
K   5    1
K   6    0
M   1    1
M   2    0
M   3    0
M   4    1
M   5    1
M   6    1表A为中心,有A、B两类,L代表1-6维度之资料,要将表B以下面的公式计算距离,并分为A、B两群:
d(x,y)=(|x-y|^2)^0.5
例如:I是属于A群,还是属于B群呢? 求得1较小,所以I属于A
D(I,A)=((1-0)^2+ (1-0)^2+ (1-0)^2+ (0-1)^2+ (0-1)^2+ (1-1)^2)^0.5 =5
D(I,B)=((1-1)^2+ (1-1)^2+ (1-1)^2 +(0-0)^2+ (0-0)^2+ (1-0)^2)^0.5 =1

以此类推,结果分群为两表A_C、B_C如下:
表A_C
ID
A
I
K表B_C
ID
B
M

解决方案 »

  1.   

    d(x,y)=( ¦x-y ¦^2)^0.5 
    例如:I是属于A群,还是属于B群呢?   求得1较小,所以I属于A 
    D(I,A)=((1-0)^2+   (1-0)^2+   (1-0)^2+   (0-1)^2+   (0-1)^2+   (1-1)^2)^0.5   =5 
    D(I,B)=((1-1)^2+   (1-1)^2+   (1-1)^2   +(0-0)^2+   (0-0)^2+   (1-0)^2)^0.5   =1 
    这段没搞懂.
      

  2.   

    D(I,A)=((1-0)^2+(1-0)^2+(1-0)^2+(0-1)^2+ (0-1)^2+ (1-1)^2)^0.5=5   
    就是用ID为I的L之TF值去减ID为A 的L之TF值,下面的一样,不知这样清楚吗?谢谢
    D(I,B)=((1-1)^2+(1-1)^2+(1-1)^2+(0-0)^2+ (0-0)^2+ (1-0)^2)^0.5=1   
      

  3.   

    例如:I是属于A群,还是属于B群呢?   求得1较小,所以I属于A 到底这个值小属于A还是大属于A?
      

  4.   

    ^这个符号是(按位互斥 OR)
    在 Transact-SQL 语句中,将两个给定的整型值转换为二进制表达式,对其执行按位互斥 OR 运算。你这里是什么算法?
      

  5.   

    不知你要啥:
    算出了结果
    set nocount on
    declare @a table(ID varchar(20),L int,TF  int)
    insert @a select 'A',1,0 
    union all select 'A',2,0     
    union all select 'A',3,0 
    union all select 'A',4,1 
    union all select 'A',5,1 
    union all select 'A',6,1 
    union all select 'B',1,1 
    union all select 'B',2,1 
    union all select 'B',3,1 
    union all select 'B',4,0 
    union all select 'B',5,0 
    union all select 'B',6,0 declare @b table(ID varchar(20),L int,TF int)
    insert @b select 'I',1,1 
    union all select 'I',2,1 
    union all select 'I',3,1 
    union all select 'I',4,0 
    union all select 'I',5,0 
    union all select 'I',6,1 
    union all select 'K',1,0 
    union all select 'K',2,0 
    union all select 'K',3,0 
    union all select 'K',4,1 
    union all select 'K',5,1 
    union all select 'K',6,0 
    union all select 'M',1,1 
    union all select 'M',2,0 
    union all select 'M',3,0 
    union all select 'M',4,1 
    union all select 'M',5,1 
    union all select 'M',6,1 
    select * from 
    (
    select a.id aid,b.id bid,power(sum(power((a.tf-b.tf)*1.0,2))*1.0,0.5) value from @a a ,@b b where a.l=b.l and a.id='A' group by a.id,b.id
    )aa
    inner join
    (
    select a.id aid,b.id bid,power(sum(power((a.tf-b.tf)*1.0,2))*1.0,0.5) value from @a a ,@b b where a.l=b.l and a.id='B' group by a.id,b.id
    )bb 
    on aa.bid=bb.bid
    --result
    /*aid                  bid                  value                                    aid                  bid                  value                                    
    -------------------- -------------------- ---------------------------------------- -------------------- -------------------- ---------------------------------------- 
    A                    I                    2.24                                     B                    I                    1.00
    A                    K                    1.00                                     B                    K                    2.24
    A                    M                    1.00                                     B                    M                    2.24*/