机器学习线性回归——实验报告
机器学习实验报告〇、实验报告pdf可在该网址下载一、实验目的与要求二、实验内容与方法2.1线性回归算法学习与回顾2.1.1线性回归的原理2.1.2一元线性回归模型2.1.3多元线性回归模型2.2线性回归算法实现简单预测三、实验步骤与过程3.1比较线性回归与现有论文中的回归算法在人脸识别中的性能3.1.1实验数据集与训练集、测试集的划分3.1.2实验步骤1.线性回归分类算法LRC2.岭回归(RidgeRegression)3.Lasso回归3.1.3实验结果3.1.4实验结果分析四、思考题4.1首先了解现阶段的半导体的股票大头4.2导出股票的数据4.3可视化股票数据4.4预测模型4.5预测结果展示五、实验结论或体会〇、实验报告pdf可在该网址下载机器学习实验三:线性回归这个需要积分下载(因为实验报告后台查重,不建议直接白嫖)。建议看博客,博客里面会有很多实验报告小说明会用【…】加粗注释。
一、实验目的与要求(1)实现基本的线性回归算法,对一个简单的数据进行预测;参考相关论文与文献,实现3-4个现有论文中的回归算法,并比较其在人脸识别中的性能(2)自行设计一个全新的线性回归算法(不是别人论文里的!而是自己创造的!),包括建模与优化,收敛性证明等(如果有),要求:你开发的新算法能在人脸识别实验中的识别率能比过基本的或现有的线性回归算法(至少在23个数据库中比较好,另12个中基本差不多)。全方位比较你的方法与你复现的方法在不同维数的识别率。(这项创新内容可另写一篇论文提交到“论文提交处”)上述内容不超3-4页。思考题题目:机器学习之股票价格预测大PK-----论从即日起到6月30日上午收盘涨幅最大的锂电池相关行业股票这部分内容要求不少于4页,长度不限(但也不要过长到20页)。要求关键数据详实、图表丰富,有理有据,引用清楚(给出网址,报告名,作者名,就像引用论文一样)最后选出价格涨幅最大的股票及其涨幅(以4月17日交易结束时的实际价格为准)。不限内容不限技术,可用机器学习的任何技术,包括但不限于线性、非线性、多项式、多变量函数等各种预测模型,也可什么也不用,用数据列表讲明理由。(可考虑每月需求、产量、价格、进口量、疫情等其它因素的关系进行建模。)建议每组同学分工合作,每人收集2-3个股票的关键可靠信息,进行信息汇总与小组讨论,最后各作各的预测,通常每个人由于观点不一致,预测值很难完全一样!。各组统一观点选出最具投资价值的一只股票并给出预测涨幅(2022年6月30日中午收盘,正好我们的最后一节课)。各组公选一位同学进行小组研究成果汇报,每人约15分钟,我们拿一个下午的实验课时间来汇报PK,要求:模型,图表,数据都详实。该部分的最后一句话用以下句子结束:短期我推荐购买****(股票名称),4月15日交易日价格是元,它到6月30日/7月6日(最后一次课下午收市价为准)的价格是元,涨幅为**%。预测人姓名:***长期(2020、2021、2022年末)我推荐购买****(股票名称),4月15日交易日价格是元,它到(2020、2021、2022年末12月30日)的预估价格分别是(、****、****元),涨(跌)幅分别为(**%、*%、%)。预测人姓名:该段话的照片保存好在手机中,以便在当时拿出证据领奖!!预测最准的,老师有神密大奖!!!)请每个同学记住自己的提交报告的最终值,并拍下.上面点收市价为准3日(以最后一次课的下午6月30对到)。
二、实验内容与方法2.1线性回归算法学习与回顾2.1.1线性回归的原理2.1.2一元线性回归模型2.1.3多元线性回归模型2.2线性回归算法实现简单预测三、实验步骤与过程3.1比较线性回归与现有论文中的回归算法在人脸识别中的性能3.1.1实验数据集与训练集、测试集的划分ORL56_46人脸数据集该数据集共有40个人,每个人10张图片。每张图片像素大小为56×46。本次实验该数据集每个类划分为5张训练集,5张测试集,使用40个类。
AR人脸数据集该数据库由3个以上的数据库组成;126名受试者面部正面图像的200幅彩色图像。每个主题有26张不同的图片。对于每个受试者,这些图像被记录在两个不同的时段,间隔两周,每个时段由13张图像组成。所有图像均由同一台摄像机在严格控制的照明和视点条件下拍摄。数据库中的每个图像都是768×576像素大小,每个像素由24位RGB颜色值表示。本次实验该数据集每个类划分为13张训练集,13张测试集,使用前16类。
FERET人脸数据集该数据集一共200人,每人7张,已分类,灰度图,80x80像素。第1幅为标准无变化图像,第2,5幅为大幅度姿态变化图像,第3,4幅为小幅度姿态变化图像。第7幅为光照变化图像。本次实验该数据集每个类划分为4张训练集,3张测试集,使用200类。
3.1.2实验步骤1.线性回归分类算法LRC2.岭回归(RidgeRegression)3.Lasso回归3.1.3实验结果3.1.4实验结果分析通过几种应用于人脸识别的方法进行比较,我们发现回归模型的人脸识别率会比较高。LRC、岭回归、Lasso回归由于是否添加正则项、添加什么样的正则项在算法上有所不同,但是通过我的实验可以发现,在人脸识别上的差距并不是很大。
四、思考题【预测的非常不准,献丑献丑!!!】
4.1首先了解现阶段的半导体的股票大头宁德时代毫无疑问,电池是新能源汽车发展的重中之重,现阶段电动车最迫切需要解决的是续航,而最直接影响续航的就是电池。目前,整个新能源动力电池行业,宁德时代不论放在国内还是全球来看,都是妥妥的龙头老大。
比亚迪自2003年收购秦川汽车之后,比亚迪就开始了他们的造车之路,并且逐渐发展成了中国最大的新能源车企。
国轩高科目前,国内锂电池上市公司中,国轩高科是主要以磷酸铁锂技术路线为主的动力点查生产企业。国轩高科在国内企业中排在行业第三,属于动力电池的第二梯队企业。
亿纬锂能亿纬锂能虽然美哟宁德时代和比亚迪做的那么大,但也一致专注于锂电池的创新发展,经过这么多年的努力,锂亚电池居世界前列,锂原电池居国内领先地位。
鹏辉能源鹏辉能源主要生产聚合物锂离子、锂离子、镍氢等二次充电电池;锂铁、锂锰、锌空等一次性电池。产品广泛应用于移动电源、航模、新能源汽车、汽车启动电源、童心基站后备电源、风光储能及家庭储能电池系统解决方案。
4.2导出股票的数据现在目前的量化平台非常多,JoinQuant(聚宽)量化平台饱受好评,本次股票预测将使用JoinQuant平台与Python的API导入股票的数据。JQData是聚宽数据团队专门为有志于从事量化投资的金融机构、研究人员以及个人量化爱好者提供的本地量化金融数据。用户只需在本地Python环境下安装JQData数据包,输入三行代码,即可调用由聚宽数据团队专业生产的全套量化金融数据。首先需要手动安装压缩包:然后将数据导出.cvs文件,查看数据结果如下图所示:
4.3可视化股票数据首先,我进行已知数据的可视化,先初步分析各个半导体行业的股价走势。
4.4预测模型我采用时间序列ARIMA模型改进之后对股票行业走势进行预测。ARIMA模型(AutoregressiveIntegratedMovingAveragemodel),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),是时间序列预测分析方法之一。ARIMA(p,d,q)中,AR是“自回归”,p为自回归项数;MA为“滑动平均”,q为滑动平均项数,d为使之成为平稳序列所做的差分次数(阶数)。首先某一天股票市价的影响取决于近几个月的走势,与预测的时间越近,认为影响程度越大。我认为股票的走势还有可能受到往年同期的影响,一年的走势具有一定程度的周期性,所以考虑在ARIMA模型的基础上,增加往年同期的考量。具体的ARIMA模型理论知识就不在实验报告中过多赘述了。
4.5预测结果展示4.5综上预测结果分析使用预测模型,预测五家半导体企业的2022年4月份的市值为预测表:
短期和长期的盈亏预测:短期我推荐购买宁德时代(股票名称),4月15日交易日价格是5949元,它到6月30日/7月6日(最后一次课下午收市价为准)的价格是8816元,涨幅为18.37%。预测人姓名:汪贝琪长期(2022、2023、2024年末)我推荐购买宁德时代(股票名称),4月15日交易日价格是5949元,它到(2022、2023、2024年末12月30日)的预估价格分别是(16985、22663、27066元),涨(跌)幅分别为(185.51%、280.95%、354.96%)。预测人姓名:汪贝琪
五、实验结论或体会本次实验报告关于线性回归,在实验过程中,线性回归可以当作一个拟合的工具,也可以解决分类问题。在人脸识别的实验中,我们知道PCA和LDA+KNN分类器是通过降维重构的手段来进行人脸识别的。对于回归算法,与其相同点都在于重构的思想。但不同的是,回归算法本身就可以作为一个预测模型,且不需要降维,而是赋予一定的权重。除了多元线性回归之外的回归算法还有:岭回归、Lasso回归等回归模型。这些与线性回归的差别在于是否添加正则项,和添加怎样的正则项。对于人脸识别的任务而言,线性回归、岭回归、Lasso回归的识别率差别不大。本次实验报告的另一任务是预测股票价格。该问题的解决思路如下:1)首先,选好半导体行业,导出股票数据。我使用的聚宽JQDATA的API,利用Python导出其数据。2)然后,数据处理,将日信息转化为月信息,方便分析。3)接着,设计预测模型,将这个行业股票的市值进行预测,并使用2021年前的数据对2021年的股票价格进行预测验证。4)最后给出预测结果和长期短期预测的市价与选择。本次实验报告耗时较长,内容也比较丰富,而且我对量化金融也非常的感兴趣,ARIMA模型也是数学建模中常用的算法。时间序列的本质就是线性回归,所以将其加以改进之后,使用在股票预测上具有一定的说服力。
传教士与野人过河问题 人工智能 实验报告
实验目的理解并熟悉掌握深度优先搜索算法。将所学人工智能理论知识综合运用到具体项目当中。问题描述有N个传教士和N个野人来到河边渡河,河岸有一条船,每次至多可供k人乘渡。问:传教士为了安全起见,应如何规划摆渡方案,使得任何时刻,河两岸以及船上的野人数目总是不超过传教士的数目(否则不安全,传教士有可能被野人吃掉)。即求解传教士和野人从左岸全部摆渡到右岸的过程中,任何时刻满足M(传教土数)≥C野人数)和M+C≤k的摆渡方案。
算法分析假设以传教士和野人的数量N为3,船一次最大的载人量K为2分析。
初始状态:河左岸有3个野人河3个传教士;河右岸有0个野人和0个传教士;船停在左岸,船上有0个人。
目标状态:河左岸有0个野人和0个传教士;河右岸有3个野人和3个传教士;船停在右岸,船上有0个人。
将整个问题抽象成怎样从初始状态经一系列的中间状态从而达到目标状态,状态的改变是通过划船渡河来引发的。
根据要求,共得出以下5中可能的渡河方案:
(1)渡2传教士
(2)渡2野人
(3)渡1野人1传教士
(4)渡1传教士
(5)渡1野人
本程序使用类来定义状态结点,使用集合存储状态结点,使用递归(深度优先查询)的思想来寻找目标状态。
实验内容程序执行流程首先,包含状态(首次为初始状态)的结构体结点(已存入结构体数组)传入处理函数,然后判断该传入结点状态是否为目标状态。
是则遍历打印结构体数组,打印完成之后,返回递归调用处,顺序执行之后代码(此步骤关系到是否能找到所有过河路径);
否则继续判断是否该传入结点已存在于结构体数组当中,如存在,不再往下执行,返回递归调用处,顺序执行之后代码;
若不存在,则继续判断该传入状态的人数是否合理(是否出现人物数量小于0的情况等),若不合理,返回递归调用处,顺序执行之后代码;
若合理,则继续判断传教士和野人人数限制条件,即在传教士人数不为0的情况下,野人人数是否大于传教士人数,若大于则出现吃人的情况,也就是说该传入状态也不合理,则返回递归调用处,顺序执行之后代码;
若不满足大于条件,则说明该状态是路径转态,也就是合理的,那么进行五种渡河方案的依次变换,首先为第一种渡河方案,两个传教士过河(注意:此处的5中渡河方案没有固定顺序,也可以是其他渡河方案),那么对该传入状态的左岸和右岸的传教士人数和野人人数进行增减(若为左岸到右岸,则左岸人数减,右岸人数加,此处有一个小技巧见本段末尾)。
增减完成并改变船的状态(使用正负一表示,正一为左岸,负一为右岸)以后就产生了一个新的状态,将该状态存入结构体数组,之后此处又递归调用处理函数,将新产生的转态结点传入,再次进行上述条件限制判断。
若在该判断途中被返回至递归调用处,说明该状态不合理,则此时将已经存入结构体数组的状态结点移出结构体数组,然后程序顺序执行,进行下一个渡河方案的处理,也就是说,此时的处理是对上一个传入结点的操作(因为刚传入的已经移出了);
若在判断途中未被返回至递归调用处,也就是说,传入的结点合理了,那么又开始从第一种渡河方案开始对该传入状态进行操作。
按照上述过程循环执行,直到出现目标状态,回到本段开头,遍历结构体数组,打印渡河路径结点信息。
完成以后,返回递归调用处,顺序执行之后代码,此后的操作是在寻找其他渡河路径。
原理为:由于该处理函数末尾存在return语句(关键),所以在找到目标状态并返回之后,目标转态结点同样会被移出结构体数组,然后在其上一个结点开始顺序往下执行操作之后的一种渡河方案,查看是否在该结点处,还有其他渡河方案可以达到目标状态,若有则同样按上述方法执行(打印输出),若执行完后面的所有渡河方案,发现都没有能够达到目标状态的结点,则会执行末尾的返回语句,返回之后,该状态结点也会被移除(关键),那么此时操作的状态结点就是上上个结点状态,对其进行其后的渡河方案操作。按照此法,不断往后退,直到所有结点都被移除,此时说明已经完成所有渡河路径的搜索(深度)。至此,本程序的执行过程叙述完毕。
小技巧:从左岸到右岸,和从右岸到左岸的状态变化是不一样的,前者左岸的人数减,右岸的人数加;后者左岸的人数加,右岸的人数减。我们不应单独再写程序来处理,而是应该使用船的转态带入计算来处理,注意,此技巧在于船的转态使用正负一来表示,而不应该是1和0,以及其他表示方法。为什么这么说?因为任何数乘以一,其本身都不会改变(有我也不会承认)。而正负号在此起到关键作用,我们使用正负一去乘以五种渡河方案的改变数值,从而得到的就是我们变换的正确结果,不论左岸右岸,都是正确合理的。
原理推导上述原理完全是按照传教士和野人数量为3人,船一次的载客量最大为2为前提所得。结合上述分析不难看出,当尚未规定传教士和野人具体数量以及船一次最大载客量为多少时,与之前分析的差别仅仅在于根据人数不同,从河一端到另一端一共有多少中载客方式,其他的原理流程与传教士和野人数量为3人,船一次的载客量最大为2的流程全部相同。
关键代码主要用来判断这条方案是否可行。
//是否重复操作for(inti=0;i