模式识别感知器算法C++写的
2017-06-24 11:13
316 查看
#include <iostream> #include <cstdio> using namespace std; const int maxn = 100+5; int C; int N1,N2; int x[maxn][2]; int arr[maxn<<1][4];//记录输入的点变化之后的点 int s[3];//记录各点坐标的乘积 int w[4]; int num = 1; int d[maxn]; int main() { cout<<"输入N1和N2,表示第一类和第二类的点得个数"<<endl; cin>>N1>>N2; cout<<"请输入N1所有点的坐标"<<endl; for(int i=0;i<N1;i++) cin>>x[i][0]>>x[i][1]; cout<<"请输入N2所有点的坐标"<<endl; for(int i=N1;i<N1+N2;i++) cin>>x[i][0]>>x[i][1]; //for(int i=0;i<N1+N2;i++)//test // cout<<x[i][0]<<' '<<x[i][1]<<endl; cout<<endl<<"第一类点为:"<<endl; for(int i=0;i<N1;i++)//写成增广向量的形式,然后输出出来 { arr[i][0] = 1; arr[i][1] = x[i][0]; arr[i][2] = x[i][1]; arr[i][3] = 1; cout<<arr[i][1]<<' '<<arr[i][2]<<' '<<arr[i][3]<<endl; } cout<<endl<<"第二类点为:"<<endl; for(int i=N1;i<N1+N2;i++)//写成增广向量的形式,然后输出出来 { arr[i][0] = 2; arr[i][1] = (-1)*x[i][0]; arr[i][2] = (-1)*x[i][1]; arr[i][3] = -1; cout<<arr[i][1]<<' '<<arr[i][2]<<' '<<arr[i][3]<<endl; } cout<<"请输入参数C,建议取1"<<endl; cin>>C; cout<<"您取得参数C="<<C<<endl; w[0] = 1; for(int i=1;i<4;i++) w[i] = 0; cout<<"初始向量w[1] = {"<<w[1]<<' '<<w[2]<<' '<<w[3]<<'}'<<endl; cout<<"下面进行迭代过程"<<endl; int k = 0; do { for(int i=0;i<N1+N2;i++) { for(int j=0;j<3;j++) s[j] = arr[i][j+1]*w[j+1]; printf("w(%d)*x(%d)=(%d,%d,%d)*(%d,%d,%d)t",num,num,w[1],w[2],w[3],arr[i][1],arr[i][2],arr[i][3]); d[i] = s[0]+s[1]+s[2]; printf("=%d\n",d[i]); if(d[i]<=0)//罚 { for(k=0;k<3;k++) w[k+1] = C*arr[i][k+1] + w[k+1]; printf("w(%d)*x(%d)=%d<=0,罚,罚后向量 w(%d)=:(",num,num,d[i],num+1); printf("%d,%d,%d",w[1],w[2],w[3]); printf(")\n"); } else { printf("w(%d)*x(%d)=%d>0,向量 w(%d)=:(",num,num,d[i],num+1); printf("%d,%d,%d",w[1],w[2],w[3]); printf(")\n"); } cout<<endl; num++; } k = 0; for(int j=(N2+N1-1);j>=0;j--) if(d[j]>0) k++; if(k<N1+N2) cout<<"未能成功,继续迭代!"<<endl; }while(k<N1+N2); //cout<<"优化后的向量:"<<endl; printf("\n优化后的向量 w(%d)=:(",num); printf("%d,%d,%d",w[1],w[2],w[3]); printf(")\n"); cout<<endl; printf("判别函数为:d(x)=(%d)x1+(%d)x2+(%d)",w[1],w[2],w[3]); return 0; }
相关文章推荐
- 模式识别感知器算法C++写的
- 模式识别中感知器算法(Perceptron Approach)的实现
- 模式识别算法之2--感知器(感知机)算法
- 模式识别导论大作业(k均值算法,感知器算法,fisher算法,贝叶斯决策,特征提取)
- KMP模式匹配算法(C++)
- 几种常见模式识别算法整理和总结
- 算法研究(四) 一维模式识别
- 模式识别读书报告---关于DP算法的…
- KMP模式匹配算法 C++实现
- 几种常见模式识别算法整理和总结
- 模式识别算法之3练习----stock
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 图像模式识别中模板匹配的基本概念以及基本算法
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 模式匹配字母某知名外企C++面试题(算法)