📄 classifier.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 + -