keras入门教程 1.线性回归建模(快速入门)
Keras入门教程
- 1.线性回归建模(快速入门)
- 2.线性模型的优化
- 3.波士顿房价回归 (MPL)
- 4.卷积神经网络(CNN)
- 5.使用LSTM RNN 进行时间序列预测
- 6.Keras 预训练模型应用
线性回归建模(快速入门)
前言
Keras
是何物?Keras
是一个用 Python 编写的高级神经网络 API。其是以TesorFlow
作为后端运行的。我们安装深度学习框架tensorflow
时自动安装的,并非单独安装,作为tesorflow
的API存在,使用起来非常方便。
目前网上有大量的 深度学习 关于tesorflow
1.X版本的教程,而2.0以上的版本教程,都是降到1.0版本再运行。因此,本文以tesorflow
‘2.8.0’ 版本进行讲解。
本文先用sklearn
线性回归模型,引入深入学习的keras
进行建模。
为了更好的快速入门深度学习的keras
,本文不讨论数学原理,不讨论模型的原理,只从程序(代码)实现方面对深度学习有个感性的认识。看完这系列文章,建议你对机器学习中深度学习有一个更深的理解。
加载包
import numpy as np
import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
%matplotlib inline
数据导入
以income
数据集为例,为了方便小伙伴,不用找数据集,由于数据比较小,所以直接写入代码。
data=pd.DataFrame(columns=['Education','Income'],data=[[10.00000,26.65884],
[10.40134,27.30644],
[10.84281,22.13241],
[11.24415,21.16984],
[11.64548,15.19263],
[12.08696,26.39895],
[12.48829,17.43531],
[12.88963,25.50789],
[13.29097,36.88459],
[13.73244,39.66611],
[14.13378,34.39628],
[14.53512,41.49799],
[14.97659,44.98157],
[15.37793,47.03960],
[15.77926,48.25258],
[16.22074,57.03425],
[16.62207,51.49092],
[17.02341,61.33662],
[17.46488,57.58199],
[17.86622,68.55371],
[18.26756,64.31093],
[18.70903,68.95901],
[19.11037,74.61464],
[19.51171,71.86720],
[19.91304,76.09814],
[20.35452,75.77522],
[20.75585,72.48606],
[21.15719,77.35502],
[21.59866,72.11879],
[22.00000,80.26057]])
# 可以查看data内容
data
数据可视化
plt.scatter(data.Education,data.Income);
分离数据
X=data.Education.values.reshape(-1,1)
y=data.Income
Sklearn 建模
model_lr=LinearRegression()
model_lr.fit(X,y)
查看线性相关属性
print( "斜率:", model_lr.coef_[0] ," 截距:",model_lr.intercept_)
print("R^2=",model_lr.score(X,y))
MSE=mean_squared_error(y,y_pred)
print("MSE:",MSE)
斜率: 5.599483656931067 截距: -39.44626851089707
R^2= 0.9309626013230593
MSE: 29.828741902209323
进行预测
y_pred=model_lr.predict(X)
画回归曲线
plt.scatter(X,y)
plt.plot(X,y_pred,"r")
keras 建模
from keras.models import Sequential
from keras.layers import Densemodel_kr = Sequential()
model_kr.add(Dense(1,input_shape=(1,),activation='linear'))
查看模型
model_kr.summary()
Model: “sequential”
Layer (type) Output Shape Param #
dense (Dense) (None, 1) 2
=================================================================
Total params: 2
Trainable params: 2
Non-trainable params: 0
选择损失函数和优化方法
model_kr.compile(optimizer='adam' , loss='mse')
model_kr.fit(X , y , epochs=200 , verbose=1)
进行200次的结果如下
Output exceeds the size limit. Open the full output data in a text editor
Epoch 1/200
1/1 [==============================] - 0s 394ms/step - loss: 835.3273
Epoch 2/200
1/1 [==============================] - 0s 6ms/step - loss: 834.3919
Epoch 3/200
1/1 [==============================] - 0s 9ms/step - loss: 833.4571
Epoch 4/200
1/1 [==============================] - 0s 5ms/step - loss: 832.5229
Epoch 5/200
1/1 [==============================] - 0s 10ms/step - loss: 831.5893
Epoch 6/200
1/1 [==============================] - 0s 9ms/step - loss: 830.6564
Epoch 7/200
1/1 [==============================] - 0s 14ms/step - loss: 829.7242
Epoch 8/200
1/1 [==============================] - 0s 4ms/step - loss: 828.7927
Epoch 9/200
1/1 [==============================] - 0s 7ms/step - loss: 827.8617
Epoch 10/200
1/1 [==============================] - 0s 8ms/step - loss: 826.9315
Epoch 11/200
1/1 [==============================] - 0s 7ms/step - loss: 826.0019
Epoch 12/200
1/1 [==============================] - 0s 7ms/step - loss: 825.0732
Epoch 13/200
...
Epoch 199/200
1/1 [==============================] - 0s 6ms/step - loss: 666.1816
Epoch 200/200
1/1 [==============================] - 0s 9ms/step - loss: 665.4104
查看线性相关属性
W , b = model_kr.layers[0].get_weights()
print('线性回归的斜率和截距: %.2f, b: %.2f' % (W, b))
线性回归的斜率和截距: 1.82, b: 0.19
yks_pred=model_kr.predict(X)
MSE=model_kr.evaluate(y,yks_pred)
print("MSE1:",MSE)
1/1 [==============================] - 0s 99ms/step - loss: 4833.7842
MSE1: 4833.7841796875
惊奇的发现与上面做的结果相差很大
看看回归曲线
plt.scatter(X,y)
plt.plot(X,yks_pred,"b",label='200 epochs')
plt.legend()
画一下MSE曲线
plt.plot(history.epoch,history.history.get('loss'),label="loss")
plt.xlabel("epoch")
plt.ylabel("MSE")
plt.legend()
200 次远远没有达到理想结果
增加epoch次数
再多次运行fit结果如下:
再次提醒小伙伴,千万别把epoch调得很大。
结论
有小伙伴说,这个结果太令人伤心了,远没有原始线性回归好。
但是,但是,你有没有发现这里根本没有“深度”,只加了一层,根本没有发挥深度学习的优势。因此在实际的模型中,会加入多层(深度),进行建模。
下一节,在此基础上,增加层和激活函数,优化此模型,进入下一节。
keras入门教程 1.线性回归建模(快速入门)相关推荐
- PR软件入门教程 Adobe Premiere Pro 快速入门指南
原文(包含图片)链接:https://www.prjianji.com/1.html 了解如何开始使用面向电影制作人.电视节目制作人.新闻记者.学生和视频制作人员的非线性编辑软件 Premiere P ...
- python快速入门教程-终于理解python快速入门教程
跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类.在python类,定义类的方法.然后直接使用类的初始化调用自身,获取相应的属性.以下是小编为你整理的pyt ...
- sklearn快速入门教程 -- 机器学习工具的快速入门指引
本系列教程旨在提供一个直观.快速的入门指引,从应用的角度进行阐述,提供框架性的理解方式. 全程共5篇教程.若抛开下载和安装的过程,应在2小时左右全部阅读和动手测试完成. (一)准备工作 (二)线性回归 ...
- 史上最全Python快速入门教程,让你快速入门python学好python
Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其解释性质,使其成为 ...
- python画图零基础入门教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件...
前面的教程中,我们已经可以让小海龟绘制出各种图形了.但是,所有绘图的代码都是预先编好的,程序一旦运行起来,运行结果(绘制的图形)就是固定不变的.这一节中,咪博士将教大家如何让海龟响应用户的输入. 1 ...
- python入门教程jupyter_python数据分析师快速入门1Jupyter文档笔记工具
简介 Jupyter Notebook是一个Web应用程序,允许您创建和共享包含实时代码,方程式,可视化和说明文本的文档. Jupyter Notebook类似于画布或环境,它允许您使用编程语言来执行 ...
- STL教程:C++ STL快速入门
目录 1.STL引言 2.STL是什么(STL简介) 3.STL历史 4.STL组件 5.STL基本结构 6.STL 使用方法 7.STL目录 网址:STL教程:C++ STL快速入门(非常详细) 第 ...
- pkpm快速入门教程_PKPM结构软件从入门到精通高清版
摘要 本书在众多PKPM结构软件中抓住PMCAD建立模型.SATWE分析计算.JCCAD基础设计这三个关键软件作为主线,从建模操作技巧入手,从规范规定.软件实现.工程应用相结合的角度,详细阐述SATW ...
- python快速编程入门教程-终于懂得python快速编程入门教程
为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...
最新文章
- Linux 的启动流程
- 定时覆盖库_高考直通车公众号 联考题库大全
- C语言的int, float,double相互转化 (从本质上理解可能的问题)
- Java配置----JDK开发环境搭建及环境变量配置
- html暂停计时器,JS实现可暂停秒表计时器效果的方法
- 【AI视野·今日NLP 自然语言处理论文速览 第十一期】Mon, 21 Jun 2021
- ci php做多图上传,CodeIgniter快速实现图片上传
- 大话css预编译处理(二)安装使用篇
- 女生,到底能不能当程序员?
- java for 循环中if判断只进入第一个_「每天三分钟跟我学Java」之条件语句和循环结构...
- #centos7 创建内网yum源 OpenStack源部署
- Hive依据key获取value
- wordpress制作主题之菜单
- 夜谈TCP/IP的起源和胜利
- 推荐下载使用:COMODO Internet Security V5.0.157302.1066 多国语言版(含:简体中文)
- 理解COM的线程套件(转)
- 2022年长沙初级会计考试模拟题及答案
- 小米手机二季度国内业绩回稳微增,雷军组织架构调整成效初显
- ceisum添加风场插件
- 苏州新导室内定位方案之WIFI RTLS室内定位解决方案