模式识别感知器算法C++写的
来源:互联网 发布:java集成极光推送 编辑:程序博客网 时间:2024/06/05 20:47
#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;}
阅读全文
0 0
- 模式识别感知器算法C++写的
- 模式识别中感知器算法(Perceptron Approach)的实现
- 模式识别:感知器的实现
- 模式识别:感知器的实现
- 模式识别:感知器的实现
- 感知器算法(C语言)模式识别几何分类法(线性可分时)感知器算法(2维C语言实现)
- 感知器算法(C语言)模式识别几何分类发(线性可分时)感知器算法(3维C语言实现)
- 模式识别六--感知器的实现
- 【模式识别】感知器 Perceptron
- 【模式识别】多层感知器 MLP
- 感知器算法+C代码
- 模式识别导论大作业(k均值算法,感知器算法,fisher算法,贝叶斯决策,特征提取)
- perception感知器算法的C语言实现代码
- 模式识别的算法总结
- 基于感知器的中文分词算法
- 模式识别(Pattern Recognition)学习笔记(九)--感知器
- 模式识别(Pattern Recognition)学习笔记(九)--感知器
- 模式识别1-线性分类器(感知机)
- 详解JS数据类型
- Java设置session超时(失效)的三种方式
- Java线程池入门必备
- JSP中的异常处理
- 剑指offer——二叉搜索树与双向链表
- 模式识别感知器算法C++写的
- 对万向节锁的理解
- TCP/IP协议中的端口
- 几款流行开源ESB总线简介
- ARP协议以及获取当前局域下主机MAC地址
- adb remount 系统提示只读文件系统Read-only file system,解决用adb disable-verity
- MongoDB windows 下 下载 安装与配置
- C++ 笔试面试题 ~[有答案]
- linux系统下 fork()系统调用: 关于父子进程缓存问题的小坑