⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fclustering.m

📁 f聚类算法 mathematica程序
💻 M
字号:
Clear[u, r];
xiangsi[u0_, c0_] := Module[{m, u = u0, c = c0, r, i, j, k, len},
m = Length[u[[1]]];
len = Length[u];
r = Table[0, {i, len}, {j, len}];
For[i = 1, i <= len, i++,
   For[j = 1, j <= len, j++,
     If[i == j, r[[i, j]] = 1, 
      r[[i, j]] = 1 - c*Sum[Abs[u[[i, k]] - u[[j, k]]], {k, 1, m}]; ]
     ];
   ];

r
](*设U={u1,u2,\[Ellipsis]\[Ellipsis],un}为待分类的全体,其中某一待分类对象由一组数据表征如下:
ui=(xi1,xi2,\[Ellipsis]\[Ellipsis],xim) (i=1,2,\[Ellipsis]\[Ellipsis],n)
ui与uj的相似关系 的建立方法很多,以上为绝对值减数法建立相似关系*)
pingfangbao[r20_] := Module[{r = r20, len, i, j, k, r2, s0, s},
len = Length[r];
r2 = Table[0, {i, len}, {j, len}];
For[i = 1, i <= len, i++,
   For[j = 1, j <= len, j++, s0 = {};
     For[k = 1, k <= len, k++,
      s = If[r[[i, k]] > r[[k, j]], r[[k, j]], r[[i, k]]];
      AppendTo[s0, s];
      ];
     r2[[i, j]] = Max[s0];
     ];
   ];
r2
](*建立等价关系\:ff08求等价矩阵\:ff09:r*)
julei[r0_, \[Lambda]_] := 
Module[{r = r0, Lambda = \[Lambda], len, i, j, t, lei, rLambda},
len = Length[r];
rLambda = Table[0, {i, len}, {j, len}];
For[i = 1, i <= len, i++,
   For[j = 1, j <= len, j++,
     rLambda[[i, j]] = If[r[[i, j]] >= Lambda, 1, 0];
     ];
   ];
t = Union[{Flatten[Position[rLambda, rLambda[[1]]], 1],
     Flatten[Position[rLambda, rLambda[[2]]], 1],
     Flatten[Position[rLambda, rLambda[[3]]], 1],
     Flatten[Position[rLambda, rLambda[[4]]], 1],
     Flatten[Position[rLambda, rLambda[[5]]], 1]}]; lei = Length[t];
Print["U可以分为", lei, "类:   ", t];
](*聚类*)
u = {{5, 5, 3, 2}, {2, 3, 4, 5}, {5, 5, 2, 3}, {1, 5, 3, 1}, {2, 4, 5, 
    1}};(*要分类的数据*)
r = xiangsi[u, 0.1];
While[pingfangbao[r] != r, r = pingfangbao[r]]
r;
julei[r, 0.4]
julei[r, 0.5]
julei[r, 0.6]
julei[r, 0.8]
julei[r, 1]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -