用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