大工20秋《人工智能》大作业答案.pdf
大连理工大学远程与继续教育学院人工智能课程设计学习中心:学习中心:专专业:业:年年级:级:学学号:号:学学生:生:题题目目:人工智能课程设计(回归算法)1.1.谈谈你对本课程学习过程中的心得体会与建议?谈谈你对本课程学习过程中的心得体会与建议?经过一学期的网上学习,我对人工智能这门课程有了初步的认识,人工智能这门课程内容新颖,涉及计算机知识非常广,学习起来极富挑战性,学到的知识在未来我们的工作中用处也非常大,当然,这门课也比较深奥,单单人工智能 只是一个入门,后面我也会在课后继续深入学习有关人工智能这方面的知识。在学习过程中我始终跟随老师视频讲解,严格要求自己,收获很大。老师的讲解深入浅出,在学识知识的同时,也激发了我的学习兴趣。我由衷的感谢老师的教导,感谢老师们不辞辛苦录制课件,感谢自己能获得这次宝贵的学习机会。2.2.人工智能课程设计人工智能课程设计,从以下从以下 5 5 个题目中任选其一作答。个题目中任选其一作答。人工智能课程设计人工智能课程设计题目二:回归算法题目二:回归算法要要求求:(1)撰写一份word 文档,里面包括(常见的回归算法、基于实例的算法具体细节)章节。(2)常见的回归算法包括:最小二乘法(Ordinary LeastSquare),逻辑回归(Logistic Regression),逐步式回归(Stepwise Regression),多 元 自 适 应 回 归 样 条大连理工大学远程与继续教育学院人工智能课程设计(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing),请选择一个算法描述下算法核心思想(3)随意选用一个实例实现你所选择的回归算法。答:(1 1)最小二乘法算法核心思想最小二乘法算法核心思想最小二乘法原理如下:根据一组给定的实验数据关系,只要求在给定点上的误差当时,即(1)这里数据数,要 求,是线性无关的函数族,假定在以及对应的一组权使,这里上给出一组为权系,求出自变量 x 与因变量 y 的函数的平方和最小.最 小,其 中(2)(2)中实际上是关于的多元函数,求 I 的最小值就是求多元函数 I 的极值,由极值必要条件,可得根据内积定义引入相应带权内积记号(3)则(3)可改写为(4)大连理工大学远程与继续教育学院人工智能课程设计这是关于参数的线性方程组,用矩阵表示为(5)称为法方程.当上至多只有 n 个不同零点,则称存在唯一。记(5)的解为从而得到最小二乘拟合曲线可以证明对故(6)得到的,有(5)线性无关,且在点集在 X 上满足 Haar 条件,此时(5)的解(6)即为所求的最小二乘解.它的平方误差为均方误差为(7)在最小二乘逼近中,若取表示为此时关于系数作为基。,则,(8)的法方程(5)是病态方程,通常当n3时都不直接取(2 2)最小二乘法)最小二乘法 C C 语言实例实现语言实例实现输入:已知点的数目以及各点坐标。输出:根据最小二乘法原理以及各点坐标求出拟合曲线。大连理工大学远程与继续教育学院人工智能课程设计程序流程:程序:#include#include#include#includefloat average(int n,float*x)int i;float av;av=0;for(i=0;in;i+)av+=*(x+i);av=av/n;return(av);/平方和大连理工大学远程与继续教育学院人工智能课程设计float spfh(int n,float*x)int i;float a,b;a=0;for(i=0;in;i+)a+=(*(x+i)*(*(x+i);return(a);/和平方float shpf(int n,float*x)int i;float a,b;a=0;for(i=0;in;i+)a=a+*(x+i);b=a*a/n;return(b);/两数先相乘,再相加float dcj(int n,float*x,float*y)int i;float a;a=0;for(i=0;in;i+)a+=(*(x+i)*(*(y+i);return(a);/两数先相加,再相乘float djc(int n,float*x,float*y)int i;float a=0,b=0;for(i=0;in;i+)a=a+*(x+i);b=b+*(y+i);a=a*b/n;return(a);/系数 afloat xsa(int n,float*x,float*y)float a,b,c,d,e;大连理工大学远程与继续教育学院人工智能课程设计a=spfh(n,x);b=shpf(n,x);c=dcj(n,x,y);d=djc(n,x,y);e=(c-d)/(a-b);/printf(%f%f%f%f,a,b,c,d);return(e);float he(int n,float*y)int i;float a;a=0;for(i=0;in;i+)a=a+*(y+i);return(a);float xsb(int n,float*x,float*y,float a)float b,c,d;b=he(n,y);c=he(n,x);d=(b-a*c)/n;return(d);void main()int n,i;float*x,*y,a,b;printf(请输入将要输入的有效数值组数n 的值:);scanf(%d,&n);x=(float*)calloc(n,sizeof(float);if(x=NULL)printf(内存分配失败);exit(1);y=(float*)calloc(n,sizeof(float);if(y=NULL)printf(内存分配失败);exit(1);printf(请输入 x 的值n);for(i=0;in;i+)scanf(%f,x+i);大连理工大学远程与继续教育学院人工智能课程设计printf(请输入 y 的值,请注意与 x 的值一一对应:n);for(i=0;in;i+)scanf(%f,y+i);for(i=0;in;i+)printf(x%d=%3.2f,i,*(x+i);printf(y%d=%3.2fn,i,*(y+i);a=xsa(n,x,y);b=xsb(n,x,y,a);printf(经最小二乘法拟合得到的一元线性方程为:n);printf(f(x)=%3.2fx+%3.2fn,a,b);