用keras做一个回归模型
摘要:这是一个系列的文章,讲述了一个工程师从零自学深度学习的过程。希望能和大家100小时入门深度学习,然后慢慢积累10000小时成为大师。用深度学习做一个回归模型,用于做预测。
1.什么是回归?
啥是回归?用听不懂的语言说,回归是一种数学模型,然后xxxxxxx
然后用我的话说,现在有个x,还有个y,y和x有一种关系,咱们先来个简单的例子。y=3x+2,这也是一种回归,
只不过是那种比较简单的回归,线性模型回归。这种线性模型回归有啥用?
比如对于我现在在顺丰,可能会有这样一个情景,可能某个地方人越多,那么件量就会多,这可能就是一种最简单的回归关系。
然后我们就可以用回归来做预测。假如y是件量,x是人数,而且我们通过机器学习,发现y和x存在y=3x+2的关系,那么只要
我们知道了有多少人,然后是不是就可以做件量预测,是不是就可以预测会有多少件量,从而更深层的做一些人力资源排班啥的。
这就是一个简单的应用场景。
2.需要什么基本的keras基础知识?
2.1 先建房子,构建keras的model
keras中最主要的数据结构式model,咱们可以理解为房子的框架。有了这个房子架构之后,咱们在往里面添家具,做更复杂的事情。
keras有两种方式建造model,一种是Sequential model,这种model很简单,就像打游戏通关一样,咱们要做的仅仅是增加关卡一样。
另外一种方式是高级API,这种是用来做一些更加复杂的模型,比如多输出模型等等。现在暂时不用管,咱们先把Sequential 用好就行了。
通过下面简单的两句话,我们就建好了房子的框架。
[Python] 纯文本查看 复制代码
| 1 2 |
|
2.2 建好房子,再往里面添家具(keras的图层的概念)
怎么理解图层?这就是得去恶补一下卷积神经网络的概念了。
深度学习模型肯定包括输入层,输出层,还有中间一个隐藏层,只不过模型越复杂,中间那个隐藏层就越多,越难。
咱们初学者可以把这些图层理解为我们如何发现x和y存在关系的一个过程。
常用的图层有卷积层、MaxPooling 层、全连接层、Dropout、扁平层。
今天的线性回归模型只用到全连接dense层。
2.3 数据输入
深度学习的第一层是输入层,需要将训练数据读进去,所以这一层必须制定输入数据的维度input_shape
model.add(Conv2D(32, (3,3), activation='relu', input_shape=(224, 224, 3)))
比如这里我们就构建了一个卷积层,输入数据的大小是224*224*3
模型创建好了,我们要用优化器和损失函数。
model.compile(loss='binary_crossentropy', optimizer='rmsprop')
机器学习初级工程师有一个很重要的工作就是调参,俗称‘调包侠’。怎么理解?
上面的损失函数和优化器其实有很多很多中,都是牛逼的人做好的。
有时候我们的模型用优化器A效果要由于优化器B,不同的优化器在不同的场景下效果是不同的。
这就需要不断地尝试,才能发现规律,从而晋级成为资深的机器学习工程师。
2.4 模型训练
模型构建完成了以后,我们要把训练的数据输入给模型,在keras中是通过fit来完成,
我们要把训练数据‘喂’给我们的模型,让它从训练数据里面学到规律。
model.fit(x_train, y_train, batch_size = 32, epochs = 10, validation_data(x_val, y_val))
2.5 评估模型
模型创建好了,也训练好了。怎么看咱们的这个模型效果好不好?
那当然要去验证了。俗话说‘时间是检验真理的唯一标准’,我们要用另外一部分数据去验证模型。
因为通常情况下我们的模型是要接受未知数据的检验,所以最开始的时候训练数据就要和测试数据区分开。
在keras里面咱们用evaluate函数来测试模型的性能。
score = model.evaluate(x_test, y_test, batch_size = 32)
通过得分我们能看到咱们做的模型到底行不行。通过不断调参数,让咱们的模型得分更高,这就是一个不断迭代优化的过程了。
3.怎么实现一个线性回归的深度学习模型?
就像上面说的,咱们要做一个件量预测模型。x代表人数,y代表件量。咱们通过某种途径知道y和x存在这样一个线性回归关系,
y=3x+2。这里我们可以通过对数据分析啥的知道y和x可能存在这种关系。现在我们要做一个模型,让模型学到weighs=3,bias=2,我们输入x,
模型会反馈出一个y,这个y=weighs*x+bias.
怎么做?
[Python] 纯文本查看 复制代码
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|
结尾:这个例子我们模拟了一个线性回归,这个线性回归可能用于件量预测场景。哈哈,虽然简单,但是确是入门的一个好例子。
最后分享一个顺丰内推:
亲爱的小伙伴们,顺丰科技内推内推,大数据算法与策略部,部门内大部分是国外名校硕博,国内211,985,招java开发,python开发,数据分析,大数据开发,机器学习等。基本要求,统招本科两年经验。技术特别牛的忽略。地点深圳。请先加入顺丰内推群扣扣858317035。简历直接发我扣扣邮箱,谢谢。
老铁们,快快加入
我还会不定期分享自己的学习视频和教程,大家一起努力。先定个小目标,30k


被折叠的 条评论
为什么被折叠?



