数据及文件都打包好了,放心下载你值得拥有,如果做过精密仪器和医学相关的软件的人对这类算法应该很是不陌生,学习看看就成,可以用到企业管理和网站决策中..
C类模糊均值算法用途很广,对图像分割,医学上脊椎骨,癌细胞分裂,无人机热图像分析
商业决策或企业管理,数据挖掘正是在这一背景下诞生的,数据挖掘(DataMining),废话不多说了。
/*
C-均值算法核心程序
*/
public void starts ort(String[][] aaa,int datal,double emax_, int c_){
// String[][] aaa为数据数组 datal为数据长度 emax_为误差 int c_为分类数
int n=datal,c=c_,k=-1;
int i,j,p,q,temp;//颜色8限制c的大小
double emax=emax_,e=300.0;
double sub,temp1,temp2,min;
double wk1[][]=new double[n][2];
double wk2[][]=new double[n][2];
int d[][]=new int[n][c];
String choosecolor[]={"BALCK","RED","GREEN","ORANGE","CYAN","YELLOW","PINK","BLUE"};
for(i=0;i
wk1[i][0]=Double.parseDouble(aaa[i][1]);
wk1[i][1]=Double.parseDouble(aaa[i][2]);
for(j=0;j
d[i][j]=(i==j)?1:0;
}
for(p=0;p<=20||e>emax;p++){//
for(j=0;j
min=1000.0;
for(i=0;i
sub=Math.abs(Double.parseDouble(aaa[j][1])-wk1[i][0])+Math.abs(Double.parseDouble(aaa[j][2])-wk1[i][1]);
if(min>sub){min=sub; k=i;}
}
for(q=0;q
}
for(i=0;i
temp=0;
temp1=temp2=0.0;
for(j=0;j
temp1+=d[j][i]*Double.parseDouble(aaa[j][1]);
temp2+=d[j][i]*Double.parseDouble(aaa[j][2]);
temp+=d[j][i];
}
wk2[i][0]=temp1/temp; wk2[i][1]=temp2/temp;
}
e=0.0;
for(i=0;i
e+=Math.abs(wk2[i][0]-wk1[i][0])+Math.abs(wk2[i][1]-wk1[i][1]);
wk1[i][0]=wk2[i][0]; wk1[i][1]=wk2[i][1];
}
}
text2.setText(" ");
text2.append("分类结果如下:");
for(i=0;i
text2.append("\n第"+(i+1)+"类中包含(以"+choosecolor[i+1]+"表示):\n");
for(j=0;j
if(d[j][i]==1) {
text2.append("("+aaa[j][1]+","+aaa[j][2]+") ");
aaa[j][3]=String.valueOf(i+1);
}
}
}
table.repaint();
}
public void newfile() {//新建数据文件
int n = JOptionPane.showConfirmDialog(this, "是否保存" + fname.getText() + "?",
"确认对话框", JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION)
savefile();
fname.setText("数据区当前文件:新建数据文件.dat");
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 4; j++) {
if (j == 0) {
text1.a[i][j] = String.valueOf(i + 1);
aa[i][j] = text1.a[i][j];
}
else {
text1.a[i][j] = "0";
aa[i][j] = "0";
}
}
}
table.repaint();
issavefile = false;
text1.tag = false;
text1.repaint();
}
}