感知机算法的C语言实现.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
感知机算法的 C 语言实现 维数 n=3 时,分别取 M=10 , M=20 , M=30 (1) 当 M=10 时,收敛时,迭代次数 K=1 ,权矩阵矢量为 W=[-0.478851 , 0.458190, -0.156789],阈值 0.230766 ,正确分类个数为 26 个。正确分类率 0. 866667 。 (2) 当 M=20 时,收敛时,迭代次数 K=20 ,权矩阵矢量为 W=[-0.348414 , 0.448089, 0.189322] , 阈 值 0.411991 ,正确分类个数为 28 个。正确分类率为 0. 933333 。 3) 当 M=30 时,收敛时,迭代次数 K=2 ,权矩阵矢量为 W=[-0.305788,-0.159451,0.640561], 阈值 0. 530926 ,正确分类个数为 30 个。正确分类率为 R 1.000000 。 维数 n=5 时,分别取 M=10 , M=20 , M=30 (1) 当 M=10 时,收敛时,迭代次数 K=2 ,权矢量矩阵为 W=[-0.274457,0.368049 , 0.363532,-0.226269,0.356574] ,阈值 0. 510926 ,正确分类个数为 26 个。正 确分类率为 R 0. 866667 。 (2) 当 M=20 时,收敛时,迭代次数 K=2 ,权矩阵矢量为 W=[-0.222079 , -0.145569, -0.102233, -0.287663, 0.645226] ,阈值 0. 618442 ,正确分类个数为 27 个。 正确分类率为 R 0. 900000 。 (3) 当 M=30 时,收敛时,迭代次数 K=2 ,权矢量矩阵为 W=[-0.190624,-0.027136,0.251925,0.309026,0.347021], 阈值 0. 796128 。正确 分类个数为 30 个。正确分类率为 R 1. 000000 。 程序如下所示: #includestdio.h #includestdlib.h #includetime.h #includemath.h #define PI 3.1415926 #define COUNT 30 //样本训练次数 #define DIMEN 5 // 输入样本维度 /*************** 函数名: ran_f 函数功能:产生 0 到 1 之间均匀分布的随机数 接口参数: *p double 型指针变量 函数返回值 a double 型 ****************/ double ran_f(double*p) { double a; srand((unsigned) time(NULL)); *p = rand(); a = *p / 32767.0; return(a); } void main() { double x[COUNT][DIMEN];  // 输入样本训练数据 int y[COUNT]; int d[COUNT]; double W[COUNT];  // 训练输出 // 理想输出 // 权值矩阵 double thres; double eps = 0.00001; double deta = 0.2; double r[1] = {3.0};  // 阈值 // 进行收敛判断的条件 // 学习因子 // 随机数种子 double xt[30][5]; int dt[30]; double m1, m2, s, dp, ep;  // 测试数据 // 理想数据输出 // dp 为理想输出与实际输出的差,  ep 为均方误差 int yt[30];  //测试输出 int count = 0; double Rate;  // 测试正确的数目 //正确分类率 int i, j, k; for(i = 0; i COUNT; i++) { for(j = 0; j DIMEN; j++) { m1 = ran_f(r); //产生均匀分布的随机数 m2 = ran_f(r); x[i][j] = sqrt(-2 * log(m1)) * sin(2 * PI * m2);  //产生正态分布随机数 } if(x[i][1] = 0) d[i] = 1; else d[i] = 0; } srand((unsigned)time(NULL)); for(j = 0; j DIMEN; j++) // 对权值、阈值进行初始化,随机产生 W[j] = (2.0 * rand() / RAND_MAX - 1) ; thres = (2.0 * rand() /

文档评论(0)

150****5607 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档