李宏毅2020机器学习作业1——Linear Regression - CSDN博客

文章推薦指數: 80 %
投票人數:10人

开始之前声明:本文参考了李宏毅机器学习作业说明.欢迎使用Markdown编辑器你好! 这是你第一次使用Markdown编辑器所展示的欢迎页。

李宏毅2020机器学习作业1——LinearRegression 科研鬼才 于 2020-04-0216:29:09 发布 9490 收藏 134 文章标签: 机器学习 深度学习 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42447868/article/details/105261672 版权 —————————————————————————————————————————————开始之前声明:本文参考了李宏毅机器学习作业说明(需翻墙),基本上是将代码复现了一遍,说明中用的是googlecolab(由谷歌提供的免费的云平台),我用的是JupyterNotebook。

—————————————————————————————————————————————本文所用到的资料百度网盘自取点击下载,提取码:j9f8。

请将所需资料下载好,确保有train.csv和test.csv两个文件,并保存到自己的目录当中。

————————————————————————————————————————————【博主的环境:Anaconda3+JupyterNotebook,python3.6.8】————————————————————————————————————————————作业要求:由每天前9个小时的18个空气的影响因素(如:NO,CO,SO2,PM2.5等等)来预测第10个小时的PM2.5,train.csv是一年的数据,每个月取了20天,每天24小时————————————————————————————————————————————现在开始跟着我一步步copy~~开始之前先导入需要的库: sys:该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数pandas:一个强大的分析结构化数据的工具集numpy:Python的一个扩展程序库,支持大量的维度数组与矩阵运算math:数学运算的库 没有库的请自行安装(JupyterNotebook安装方法:进入自己的环境,condainstall库名字即可) importsys importpandasaspd importnumpyasnp importmath 现在导入train数据 #导入数据(前面‘’为数据存放路径,后面big5对字符串进行编码转换) data=pd.read_csv('E:/jupyter/data/hw1/train.csv',encoding='big5') 我们的数据是csv格式用excel打开会出现乱码,可以用Notepad++打开对数据进行处理,取第4列开始的数据 #分割出前3列,从第4列开始将数据存到data data=data.iloc[:,3:] data[data=='NR']=0 raw_data=data.to_numpy() print(raw_data) 运行之后结果,对照train数据可以看出,前3列数据已经被删掉了 [['14''14''14'...'15''15''15'] ['1.8''1.8''1.8'...'1.8''1.8''1.8'] ['0.51''0.41''0.39'...'0.35''0.36''0.32'] ... ['36''55''72'...'118''100''105'] ['1.9''2.4''1.9'...'1.5''2''2'] ['0.7''0.8''1.8'...'1.6''1.8''2']] 我们再对数据进行重组,将原始的4320×24的数据按照每月重组成12个18×480的数据 #对data进行调整,将4320*24重组为12*18*480 month_data={} formonthinrange(12): sample=np.empty([18,480]) fordayinrange(20): sample[:,day*24:(day+1)*24]=raw_data[18*(20*month+day):18*(20*month+day+1),:] month_data[month]=sample 按照作业要求,每9个小时的数据来预测第10个小时的PM2.5,每天24小时,每9个小时构成一个data,第10小时为Label,每天有24-9=15个data和Label,每个月有300个data,所以一年有12×20×15=3600个data因为1个月20天都是连续的,所以可以将20天的480个小时看成连续的,所以一个月就有480-9=471个data,一年有471×12=5652个data,同样有5652个Label(第10个小时的PM2.5),采用这种方法可以构建较多的data。

(每个data中有9×18个数据)使用如下代码实现: x=np.empty([12*471,18*9],dtype=float) y=np.empty([12*471,1],dtype=float) formonthinrange(12): fordayinrange(20): forhourinrange(24): ifday==19andhour>14: continue x[month*471+day*24+hour,:]=month_data[month][:,day*24+hour:day*24+hour+9].reshape(1,-1) y[month*471+day*24+hour,0]=month_data[month][9,day*24+hour+9] print(x) print(y) 我们可以看一下运行结果, [[14.14.14....2.2.0.5] [14.14.13....2.0.50.3] [14.13.12....0.50.30.8] ... [17.18.19....1.11.41.3] [18.19.18....1.41.31.6] [19.18.17....1.31.61.8]] [[30.] [41.] [44.] ... [17.] [24.] [29.]] 如下图所示,对比train.cxv数据可以看出data和label已经被构建出来对数据进行归一化处理从训练集中取出一部分设立验证集,目的是为了对模型进行验证 #归一化 mean_x=np.mean(x,axis=0) std_x=np.std(x,axis=0) foriinrange(len(x)): forjinrange(len(x[0])): ifstd_x[j]!=0: x[i][j]=(x[i][j]-mean_x[j])/std_x[j] #将训练集分成训练-验证集,用来最后检验我们的模型 x_train_set=x[:math.floor(len(x)*0.8),:] y_train_set=y[:math.floor(len(y)*0.8),:] x_validation=x[math.floor(len(x)*0.8):,:] y_validation=y[math.floor(len(y)*0.8):,:] print(x_train_set) print(y_train_set) print(x_validation) print(y_validation) print(len(x_train_set)) print(len(y_train_set)) print(len(x_validation)) print(len(y_validation)) 运行结果 [[-1.35825331-1.35883937-1.359222...0.266507290.2656797 -1.14082131] [-1.35825331-1.35883937-1.51819928...0.26650729-1.13963133 -1.32832904] [-1.35825331-1.51789368-1.67717656...-1.13923451-1.32700613 -0.85955971] ... [0.869299690.708866680.38952809...1.391100730.2656797 -0.39079039] [0.710188760.390758060.07157353...0.26650729-0.39013211 -0.39079039] [0.39196690.072649440.07157353...-0.38950555-0.39013211 -0.85955971]] [[30.] [41.] [44.] ... [7.] [5.] [14.]] [[0.073745040.072649440.07157353...-0.38950555-0.85856912 -0.57829812] [0.073745040.072649440.23055081...-0.85808615-0.57750692 0.54674825] [0.073745040.231703750.23055081...-0.576937790.54674191 -0.1095288] ... [-0.88092053-0.72262212-0.56433559...-0.57693779-0.29644471 -0.39079039] [-0.7218096-0.56356781-0.72331287...-0.29578943-0.39013211 -0.1095288] [-0.56269867-0.72262212-0.88229015...-0.38950555-0.10906991 0.07797893]] [[13.] [24.] [22.] ... [17.] [24.] [29.]] 4521 4521 1131 1131 Training: 设置超参数:学习率,迭代次数等计算损失L计算梯度gradient梯度下降 损失函数采用均方根误差公式对参数W计算梯度值梯度下降,采用RMSprop(指数加权移动平均数),不理解下面公式的同学百度一下 这里原文好像忽略了上一次迭代计算的梯度值(好像会出现梯度消失,不知道为啥),直接用本次迭代的梯度值平方来进行优化这里就是adagrad方法,原理图在末尾代码实现如下: #因为存在偏差bias,所以dim+1 dim=18*9+1 #w维度为163*1 w=np.zeros([dim,1]) #x_train_set维度为4521*163 x_train_set=np.concatenate((np.ones([len(x_train_set),1]),x_train_set),axis=1).astype(float) #设置学习率 learning_rate=10 #设置迭代数 iter_time=30000 #RMSprop参数初始化 adagrad=np.zeros([dim,1]) eps=0.0000000001 #beta=0.9 #迭代 fortinrange(iter_time): loss=np.sqrt(np.sum(np.power(np.dot(x_train_set,w)-y_train_set,2))/len(x_train_set)) if(t%100==0): print("迭代的次数:%i,损失值:%f"%(t,loss)) #gradient=2*np.dot(x.transpose(),np.dot(x,w)-y) #计算梯度值 gradient=(np.dot(x_train_set.transpose(),np.dot(x_train_set,w)-y_train_set))/(loss*len(x_train_set)) adagrad+=(gradient**2) #更新参数w w=w-learning_rate*gradient/np.sqrt(adagrad+eps) #保存参数w np.save('weight.npy',w) 我们看看运行结果,这里我只贴了部分打印值,迭代30000次损失值收敛到了19,epoch可以自己设置试试看发现损失值出现波动,但好消息是逐渐在收敛,好像用RMSprop优化会出现这种情况如果你用第一个gradient计算梯度好像没有波动出现,可以试试看 迭代的次数:0,损失值:27.239592 迭代的次数:100,损失值:598.991742 迭代的次数:200,损失值:96.973083 迭代的次数:300,损失值:240.807182 迭代的次数:400,损失值:71.607934 迭代的次数:500,损失值:212.116933 迭代的次数:600,损失值:117.461546 迭代的次数:700,损失值:189.660439 迭代的次数:800,损失值:87.943008 迭代的次数:900,损失值:158.851111 迭代的次数:1000,损失值:74.318934 迭代的次数:1100,损失值:138.784655 迭代的次数:1200,损失值:67.418347 迭代的次数:1300,损失值:124.302389 迭代的次数:1400,损失值:63.235512 迭代的次数:1500,损失值:113.160475 迭代的次数:1600,损失值:60.299076 到这里为止,模型已经训练好了,我们在验证集上验证一下模型,并对测试集test.cxv进行预测 先对测试集test.csv进行预处理 testdata=pd.read_csv('E:/jupyter/data/hw1/test.csv',header=None,encoding='big5') test_data=testdata.iloc[:,2:] test_data[test_data=='NR']=0 test_data=test_data.to_numpy() test_x=np.empty([240,18*9],dtype=float) foriinrange(240): test_x[i,:]=test_data[18*i:18*(i+1),:].reshape(1,-1) foriinrange(len(test_x)): forjinrange(len(test_x[0])): ifstd_x[j]!=0: test_x[i][j]=(test_x[i][j]-mean_x[j])/std_x[j] test_x=np.concatenate((np.ones([240,1]),test_x),axis=1).astype(float) print(test_x) 看看运行结果 array([[1.,-0.24447681,-0.24545919,...,-0.67065391, -1.04594393,0.07797893], [1.,-1.35825331,-1.51789368,...,0.17279117, -0.10906991,-0.48454426], [1.,1.5057434,1.34508393,...,-1.32666675, -1.04594393,-0.57829812], ..., [1.,0.3919669,0.54981237,...,0.26650729, -0.20275731,1.20302531], [1.,-1.8355861,-1.8360023,...,-1.04551839, -1.13963133,-1.14082131], [1.,-1.35825331,-1.35883937,...,2.98427476, 3.26367657,1.76554849]]) 验证模型并预测 #在验证集上进行验证 w=np.load('weight.npy') x_validation=np.concatenate((np.ones([len(x_validation),1]),x_validation),axis=1).astype(float) forminrange(len(x_validation)): Loss=np.sqrt(np.sum(np.power(np.dot(x_validation,w)-y_validation,2))/len(x_validation)) print("theLossonvaldatais%f"%(Loss)) #预测 ans_y=np.dot(test_x,w) print('预测PM2.5值') print(ans_y) 运行结果 theLossonvaldatais18.427185 预测PM2.5值 [[-15.78367116] [-2.32261409] [59.74234153] [-2.69635112] [39.23820506] [13.8801302] [22.58641017] [31.11258594] [41.92474119] [68.36693984] [17.54723298] [42.69150518] [85.92726242] [64.53572169] [26.60792925] [-7.59077676] 可以看出,在我们设立的验证集上,误差为18.4,并且在测试集上有些预测值为负值,所以模型还是存在较大误差,有待优化。

注:运行过程中出现维度不匹配情况时,从头运行一下程序便可。

有错误的地方希望大家批评指正,谢谢! 梯度下降的地方理解有误:刚看了GradientDescent1的视频,adagrad方法如下图所示 科研鬼才 关注 关注 35 点赞 踩 13 评论 134 收藏 打赏 扫一扫,分享内容 点击复制链接 李宏毅2020机器学习课程课后作业要求+代码.zip 03-14 李宏毅2020机器学习课程课后作业要求+代码,基于jupyternotebook的源码。

台湾大学李宏毅机器学习作业1、作业2、作业3详解及源码 热门推荐 河洛空间 05-24 1万+ 作业1:线性回归预测PM2.5 https://www.cnblogs.com/HL-space/p/10676637.html 作业2:Logistic回归二分类 https://www.cnblogs.com/HL-space/p/10785225.html 作业3:基于卷积神经网络的面部表情识别 https://www.cnblogs.com/HL-space/p/10888556... 评论 13 您还未登录,请先 登录 后发表或查看评论 李宏毅机器学习作业 01-18 李宏毅机器学习作业,文档文件,笔记全面,总结充分,仅供学习 2020李宏毅机器学习课程作业——Homework1:LinearRegression 梅菜扣肉 06-20 6071 一、作业获取途径 课程网址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html B站视频地址:https://www.bilibili.com/video/BV1JE411g7XF?from=search&seid=18330864429491522852 如果不能访问课程网址,作业的压缩包如下,链接:https://pan.baidu.com/s/1PZZnWZKZONDCGTMznKINEg 提取码:5of8 案例提供的是在Col. 李宏毅2020年机器学习作业3学习笔记 求算法实习 05-11 1775 李宏毅2020年机器学习作业3学习笔记前言一、问题描述二、实现过程2.1调包2.2数据处理2.3网络搭建2.4模型训练2.5数据预测三、完整代码3.1官方版本3.2另一版本 前言 声明:本文参考了李宏毅机器学习2020年作业例程,基本上是将代码复现了一遍,开发平台是Pycharm社区版2021。

开发环境:Anaconda3+Pycharm,python3.6.8。

一、问题描述 数据可以从Kaggle上获取。

链接:Kaggle数据下载 作业要求:在收集来的资料中均是食物的照片,共有11类,Brea 台大李宏毅机器学习作业4(HW4)——可解释机器学习 Horizon2333的博客 03-15 2889 最近刚开始学习机器学习,看的是台湾大学李宏毅老师的视频课程MachineLearning2019,李宏毅老师课程共有8个作业,在网上大约可以搜到前三个作业的解答,分别是PM2.5预测,人薪酬的二分类和表情分类,我在做这三次作业中主要参考了秋沐霖的三篇博客,链接如下: 作业1:线性回归预测PM2.5----台大李宏毅机器学习作业1(HW1) 作业2:Logistic回归预测收入----台大李宏毅... 李宏毅机器学习2020课后作业笔记【hw1】pm2.5值的预测 fomoo的博客 05-23 217 李宏毅机器学习2020课后作业hw11.问题描述2.数据预处理3.模型构建4.模型评估5.个人总结 1.问题描述 2.数据预处理 3.模型构建 4.模型评估 5.个人总结 李宏毅2020机器学习作业一 zyr_code的博客 12-04 1553 Step1:读懂题目 题目的意思 训练集是:12个月–>每月的前20天–>每天的24小时–>每小时的18种不同属性的数值 测试集:240天–>连续的9小时–>18种不同的属性 要求的输出:根据某天连续的9小时–>18种不同的属性,预测第10小时的PM2.5的值。

也就是通过一个18*9的矩阵预测出来一个值 Step2:数据预处理 #读取数据csv文件,将csv数据保存为矩阵 data=pd.read_csv('./train.csv',encoding='bi 李宏毅机器学习——课后作业1 粉丝头子的故事 02-02 3135 李宏毅机器学习视频地址: 【李宏毅深度学习19(完整版)国语】 第一次作业参考地址: 线性回归预测PM2.5----台大李宏毅机器学习作业1(HW1) 文章目录作业要求:作业分析:模型分析:代码分析:数据预处理:模型建立:完整代码:运行结果: 作业要求: 给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量。

训练集介绍: CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天的数据做训练集,12月X20天=240天,每月后10天数据用于测试,. 李宏毅2020机器学习作业1详细解析 龙卡的博客 04-10 2056 对作业的各个过程均进行了解析,适合刚开始学习机器学习的同志。

李宏毅机器学习--课后作业HW_1 青春正当时 07-19 3548 看了李宏毅老师讲的机器学习课程,真的是受益匪浅,老师讲课非常有意思,不是空洞的讲数学公式,以及抽象的理论,通过在课堂上加入游戏元素来引导大家学习,我个人觉得这种方式是很好的,而且原理讲的也很清楚,适合小白学习,这里有B站的视频链接,有兴趣的可以去看一下【李宏毅《机器学习》-哔哩哔哩】,因为没有字幕,所以可以配着学习笔记学(李宏毅机器学习笔记,来自于Datawhale的学习笔记,这个平台也是国内一个很好的学习AI的开源平台,有兴趣的可以去关注下) 【李宏毅2021机器学习深度学习——作业3CNN】FoodImageClassfication记录(双过strongbaseline) py今天刷题了吗 12-17 1040 文章目录写在前面做完这个实验应该有的收获:先上实验结果(直接使用pytorch内置的模型resnet18(pretrain=False),双过strongbaseline,过线一点点,学习用就行了)一些改进想法:一些参考及链接: 写在前面 新手入门,相互学习,期待大佬有更好的想法。

做完这个实验应该有的收获: 使用CNN进行图片分类 学习到dataaugmentations(有22种之多,但并不是每种都有用,看情况) 使用无监督学习(主要)(用上大量unlabeleddata辅助训练) 李宏毅机器学习作业一 helloworld 04-09 1667 资料: 助教官方代码colab地址:https://colab.research.google.com/drive/131sSqmrmWXfjFZ3jWSELl8cm0Ox5ah3C#scrollTo=NzvXP5Jya64 较好的作业分享的kaggle位置:https://www.kaggle.com/liyi0123/kernel1381704018 这些链接都来自于:助教的PPT中的链接。

作业参考一:https://blog.csdn.net/iteapoy/article/de 【强推】李宏毅老师2021深度学习课程学习笔记(持续更新中) cyy0789的博客 09-23 904 机器学习可以理解为是让机器自动寻找函数的一个过程。

根据函数功能的不同,可以将机器学习进行以下分类。

AlphaGo做的事情也是一个分类问题:将当前棋盘上白子黑子的位置作为输入,输出是19*19个calsses中的一个。

如果知道了李宏毅老师Youtube过去三年每一天的播放量数据,去预测明天的播放量数据,可以假定一个包含了两个参数w和b的线性模型,输入x1为前一天的数据(如2.25),y为预测的当前一天的数据(如2.26) 损失函数是一个关于模型参数的函数,用来评价模型及模型参数选择的优劣,此处 李宏毅《深度学习》(一) qq_41430142的博客 07-14 281 人工智能的浪潮正在席卷全球,诸多词汇时刻萦绕在我们耳边:人工智能(ArtificialIntelligence)、机器学习(MachineLearning)、深度学习(DeepLearning)。

本文主要是对李宏毅课程内容进行笔记梳理,参考链接在文末已经给出。

1-机器学习介绍 人工智能是我们想要达成的目标,而机器学习是想要达成目标的手段,希望机器通过学习方式,他跟人一样聪明。

深度学习则是是机器学习的其中一种方法。

简而言之就是:机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。

机 台大李宏毅机器学习2020作业(一):手写线性回归,实现多因素作用下的PM2.5预测 意疏的学习笔记 03-24 3249 前言 深度学习入门|李宏毅作业HW4(NLP) qq_40933711的博客 04-16 3339 文章目录一、构造Data集自定义Dataset类构造Dataloader报错:brokenpipe二、构建模型2.1Base模型留下作业:进阶难度,自己架构Transformer。

2.2验证模型2.2.1model_fn:输入一组bacth数据进入模型,输出损失和准确率2.2.2Validate:计算验证集上的损失2.3更新模型,存储模型最优参数三、预测数据3.1定义预测集Data3.2加载最优模型,预测label 任务描述:SpeakerIdentification这是一个语音识别任务 ⭐李宏毅机器学习2020作业汇总 ⛄ 01-30 1092 更新进度:■■■■■□□□□□□□□□□□□□□□|30% 2022李宏毅作业hw4-挫败感十足的一次作业。

最新发布 YI_SHU_JIA的博客 05-30 302 难难难难于上青天 def__init__(self,data_dir,segment_len=128): self.data_dir=data_dir self.segment_len=segment_len #Loadthemappingfromspeakernemetotheircorrespondingid. mapping_pa... 李宏毅2020深度学习课程作业 三金samkam的博客 03-31 7280 Homework1:LinearRegression 李宏毅老师个人网站链接:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html 课程b站链接:https://www.bilibili.com/video/av94519857 作业说明YouTube链接:https://www.youtube.com/watch?v=QfU... “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 ©️2022CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页 科研鬼才 CSDN认证博客专家 CSDN认证企业博客 码龄4年 暂无认证 23 原创 85万+ 周排名 125万+ 总排名 5万+ 访问 等级 887 积分 104 粉丝 110 获赞 85 评论 638 收藏 私信 关注 热门文章 卷积运算原理 14242 李宏毅2020机器学习作业1——LinearRegression 9488 NVIDIAJetsonXavierNX串口通讯(发送YOLO检测结果)(记录) 7982 SSD-Pytorch模型训练自己的数据集 6147 李宏毅2020机器学习作业3——ConvolutionalNeuralNetwork 4954 分类专栏 笔记 6篇 最新评论 李宏毅2020机器学习作业1——LinearRegression Cichard: 老哥learningrate是一个个试出来的嘛,我一开始设置100,迭代1e4到20的Loss,还是说RMSprop方法就是相对来说比较慢的 卷积运算原理 m0_67697671: 每次卷积运算完后都会缩短图片尺寸不对 SSD-Pytorch模型训练自己的数据集 qq_53579086: 我遇到的问题是name'cv2'isnotdefined,这是什么原因呢,楼主 NVIDIAJetsonXavierNX串口通讯(发送YOLO检测结果)(记录) 科研鬼才: 写进去啊 NVIDIAJetsonXavierNX串口通讯(发送YOLO检测结果)(记录) 别抢我中路: 怎么把yolo的结果存到缓存里啊 您愿意向朋友推荐“博客详情页”吗? 强烈不推荐 不推荐 一般般 推荐 强烈推荐 提交 最新文章 NVIDIAJetsonXavierNX串口通讯(发送YOLO检测结果)(记录) Linux引导流程学习笔记 linux命令学习笔记 2020年15篇 2019年8篇 目录 目录 分类专栏 笔记 6篇 目录 评论 13 被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 打赏作者 科研鬼才 你的鼓励将是我创作的最大动力 ¥2 ¥4 ¥6 ¥10 ¥20 输入1-500的整数 余额支付 (余额:--) 扫码支付 扫码支付:¥2 获取中 扫码支付 您的余额不足,请更换扫码支付或充值 打赏作者 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。

2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值



請為這篇文章評分?