C/C++代码
training
/***********Perceptron的训练*************/
int trainPerceptron()
{
int i,j;
double label,d,e,sum_e=0,mse;
int epoch;
w[0]=1;
w[1]=0;
w[2]=0;
for(epoch=0;epoch<epoches;epoch++)
{
for (i=0;i<num_tr;i++)
{
x[0]=1;
x[1]=data[0][i];
x[2]=data[1][i];
label=data[2][i];
d=w[0]*x[0]+w[1]*x[1]+w[2]*x[2];
if (d>0)
{
d=1;
}
else
{
d=-1;
}
e=label-d;
for (j=0;j<3;j++)
{
w[j]=w[j]+eta*e*x[j];
//cout<<w[j]<<endl;
}
//system("pause");
sum_e=sum_e+pow(e,2);
}
mse=sum_e/num_tr;
//cout<<mse<<endl;
sum_e=0;
}
return 0;
}
testing
/***********Perceptron的测试*************/
int testPerceptron()
{
int i;
double err_rate=0;
double d;
for(i=num_tr;i<num_samp;i++)
{
x[0]=1;
x[1]=data[0][i];
x[2]=data[1][i];
d=w[0]*x[0]+w[1]*x[1]+w[2]*x[2];
if (d>0)
{
d=1;
}
else
{
d=-1;
}
if (d!=data[2][i])
{
err_rate=err_rate+1;
}
}
err_rate=err_rate/(num_samp-num_tr);
cout<<err_rate<<endl;
return 0;
}