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

📄 classifier.c

📁 贝叶斯分类程序,iris数据集,很有用,已测试
💻 C
字号:
#include "global.h"
#include <string.h>
#include <math.h>

void MeanEstimation()
{
	int i,j,k;//	int amount[CLASSTYPENUM];

	p=head;

	for(i=0;i<CLASSTYPENUM;i++)
	{
		for(j=0;j<ATTRIBUTENUM;j++)
		{
			mean_estimation[i].mean_estimation[j]=0;
		}
	}

	for(i=0;i<CLASSTYPENUM;i++)
	{
		for(j=0;j<amount[i];j++)
		{
			for(k=0;k<ATTRIBUTENUM;k++)
			{
				mean_estimation[i].mean_estimation[k]+=p->iris.iris_attribute[k];
			}
			p=p->next;
		}
	}

	for(i=0;i<CLASSTYPENUM;i++)
	{
		for(j=0;j<ATTRIBUTENUM;j++)
		{
			mean_estimation[i].mean_estimation[j]/=amount[i];

//			printf("%lf\n",mean_estimation[i].mean_estimation[j]);
		}

	}

//	printf("\n\n");
}

void CovarianceEstimation()
{
	int i,j,k,l;

	p=head;

	for(i=0;i<CLASSTYPENUM;i++)
	{
		for(j=0;j<ATTRIBUTENUM;j++)
		{
			for(k=0;k<ATTRIBUTENUM;k++)
			{
				covariance_estimation[i].covariance_estimation[j][k]=0;
			}
		}
	}

	for(i=0;i<CLASSTYPENUM;i++)
	{
		for(j=0;j<amount[i];j++)
		{
			for(k=0;k<ATTRIBUTENUM;k++)
			{
				for(l=0;l<ATTRIBUTENUM;l++)
				{
					covariance_estimation[i].covariance_estimation[k][l]+=(p->iris.iris_attribute[k]-mean_estimation[i].mean_estimation[k])*(p->iris.iris_attribute[l]-mean_estimation[i].mean_estimation[l]);
				}
			}
			
			p=p->next;
		}
	}

	for(i=0;i<CLASSTYPENUM;i++)
	{
		for(j=0;j<ATTRIBUTENUM;j++)
		{
			for(k=0;k<ATTRIBUTENUM;k++)
			{
				covariance_estimation[i].covariance_estimation[j][k]/=(amount[i]-1);

		//		printf("%lf    ",covariance_estimation[i].covariance_estimation[j][k]);
			}

//			printf("\n");
		}

//		printf("\n\n");
	}

}

//////////函数调用

/*int Max(double *mahalnanobis)
{
    int i,number;
	
	double max=*(mahalnanobis);
	number=0;

	for(i=0;i<CLASSTYPENUM;i++)
	{
		if(max<(*(mahalnanobis+i)))
		{
			max=(*(mahalnanobis+i));
			number=i;
		}
	}

	return number;
}
*/
int ClassiFier(double *test_attri)
{
	int i,j,k;

	int number;

	double max;

	double tempt[ATTRIBUTENUM];
	
	for(i=0;i<CLASSTYPENUM;i++)
	{
		mahalnanobis[i]=0;
	}

	for(i=0;i<CLASSTYPENUM;i++)
	{
		for(j=0;j<ATTRIBUTENUM;j++)
		{
			tempt[j]=0;
		}

		for(j=0;j<ATTRIBUTENUM;j++)
		{
			for(k=0;k<ATTRIBUTENUM;k++)
			{
				tempt[j]+=((*(test_attri+k))-mean_estimation[i].mean_estimation[k])*(covariance_estimation[i].covariance_estimation[k][j]);
			    ///////////////////////////////////////////////Test!!!!!!!!!!!!!!!!!!!!!! 
			}
		}

		for(j=0;j<ATTRIBUTENUM;j++)
		{
			mahalnanobis[i]+=tempt[j]*((*(test_attri+j))-mean_estimation[i].mean_estimation[j]);
			////////////////////////////////////////Test!!!!!!!!!!!!!!!!!!!
		}

		mahalnanobis[i]=(-0.5)*mahalnanobis[i];//+(-0.5)log(range_value[i]);
	}

	for(i=0;i<CLASSTYPENUM;i++)
	{
		printf("贝叶斯值:%lf\n\n",mahalnanobis[i]);
	}

   max=mahalnanobis[0];
   number=0;

   for(i=0;i<CLASSTYPENUM;i++)
   {
	   if(max<mahalnanobis[i])
	   {
		   max=mahalnanobis[i];
		   number=i;
	   }
   }
  
 //  printf("%d",number);
   return number;
}

⌨️ 快捷键说明

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