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

📄 cluster.java

📁 对iris数据进行聚类分析的java源程序
💻 JAVA
字号:
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader;
public class Cluster
{
	public void readTxtToArray(float a[][]) throws IOException
	{
		File f = new File("iris.txt"); 
        InputStream input = new FileInputStream(f); 
		BufferedReader b = new BufferedReader(new InputStreamReader(input)); 
		StringBuffer buffer = new StringBuffer(); 
		String value = b.readLine(); 

		while(value != null)
		{ 
			buffer.append(" "+value); 
			value = b.readLine(); 
	
		} 

		String[] temp = buffer.toString().replaceFirst(" ","").split("\\s+"); 
		float[] number = new float[temp.length]; 
		for(int i=0;i<temp.length;i++)
		{ 
			try
			{ 
				number[i] = Float.parseFloat(temp[i]); 
				//System.out.print(number[i]+" "); 
			}
			catch(Exception e)
			{ 
				System.out.println("文件中存在非数字字符!"); 
			} 
		} 
		
		int x=0;
		for(int j=0;j<150;j++)
			for(int k=0;k<4;k++)
			{
				a[j][k]=number[x];
				x++;
			}
			
		

	}
	
	public int seccenter(float a[][])  /*寻找第二个聚类中心*/
	{
		double max=0.0;
		double dis;
		int index=0;
		for(int k=0;k<150;k++)
		{
			dis=(a[k][0]-a[0][0])*(a[k][0]-a[0][0])+(a[k][1]-a[0][1])*(a[k][1]-a[0][1])+(a[k][2]-a[0][2])*(a[k][2]-a[0][2])+(a[k][3]-a[0][3])*(a[k][3]-a[0][3]);
			if(dis>max)
			{
				max=dis;
				index=k;
			}
		}
		return index;
	}
public int thicenter(float a[][],int c)  /*寻找第三个聚类中心*/
{
	
	double max=0.0;
	double dis;
	double dis1,dis2;
    int index=0;
	for(int k=0;k<150;k++)
	{
		dis1=(a[k][0]-a[0][0])*(a[k][0]-a[0][0])+(a[k][1]-a[0][1])*(a[k][1]-a[0][1])+(a[k][2]-a[0][2])*(a[k][2]-a[0][2])+(a[k][3]-a[0][3])*(a[k][3]-a[0][3]);
		dis2=(a[k][0]-a[c][0])*(a[k][0]-a[c][0])+(a[k][1]-a[c][1])*(a[k][1]-a[c][1])+(a[k][2]-a[c][2])*(a[k][2]-a[c][2])+(a[k][3]-a[c][3])*(a[k][3]-a[c][3]);
		if(dis1<dis2)
			dis=dis1;
		else
			dis=dis2;
		if(dis>max)
		{
			max=dis;
			index=k;
		}
	}
	return index;
}
public void julei(float a[][],int c1,int c2,int c3)  /*把样本聚类*/
{
	double dis1,dis2,dis3;

	for(int k=0;k<150;k++)
	{
		dis1=(a[k][0]-a[c1][0])*(a[k][0]-a[c1][0])+(a[k][1]-a[c1][1])*(a[k][1]-a[c1][1])+(a[k][2]-a[c1][2])*(a[k][2]-a[c1][2])+(a[k][3]-a[c1][3])*(a[k][3]-a[c1][3]);
		dis2=(a[k][0]-a[c2][0])*(a[k][0]-a[c2][0])+(a[k][1]-a[c2][1])*(a[k][1]-a[c2][1])+(a[k][2]-a[c2][2])*(a[k][2]-a[c2][2])+(a[k][3]-a[c2][3])*(a[k][3]-a[c2][3]);
		dis3=(a[k][0]-a[c3][0])*(a[k][0]-a[c3][0])+(a[k][1]-a[c3][1])*(a[k][1]-a[c3][1])+(a[k][2]-a[c3][2])*(a[k][2]-a[c3][2])+(a[k][3]-a[c3][3])*(a[k][3]-a[c3][3]);
        if(dis1<=dis2)
		{
			if(dis1<=dis3)
				System.out.printf("The line %d belongs to category 1.\n",k);
			else
				System.out.printf("The line %d belongs to category 3.\n",k);
		}
		else
		{
			if(dis2<=dis3)
				System.out.printf("The line %d belongs to category 2.\n",k);
			else
				System.out.printf("The line %d belongs to category 3.\n",k);
		}
	}
}
    
    
}

⌨️ 快捷键说明

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