1. 代码实战

#!/usr/bin/env python
#!_*_ coding:UTF-8 _*_

import numpy as np
# 这句话不知道是什么意思
np.random.seed(1337)
from keras.models import Sequential
from keras.layers import Dense
import matplotlib.pyplot as plt

# 创建一些训练数据
# 生成-1 到 1 之间的float64的200个数的列表
X = np.linspace(-1, 1, 200)

# 打乱列表为无序状态
np.random.shuffle(X)

# 根据X的数据生成Y,并且系数为0.5, 偏置为0到0.05
Y = 0.5 * X + 2 + np.random.normal(0, 0.05, (200, ))

# 使用plt工具画图
plt.scatter(X, Y)
plt.show()

# 将生成的前面160条数据作为训练数据
X_train, Y_train = X[:160], Y[:160]
# 将生成的后面40条数据作为测试数据
X_test, Y_test = X[160:], Y[160:]

# 创建一个训练模型
model = Sequential()

# 为训练模型添加隐藏层
model.add(Dense(units=1, input_dim=1))

# 为训练模型进行编译,使用均方误差损失函数
model.compile(loss='mse', optimizer='sgd')

# 开始进行训练,
for step in range(301):
    # 该训练函数每次训练均返回cost损失
    cost = model.train_on_batch(X_train, Y_train)
    if step % 100 == 0:
        print('train cost: ', cost)

# 测试训练过的模型
# 该批量测试函数返回损失值
cost = model.evaluate(X_test, Y_test, batch_size=40)
print('test cost:', cost)
# 打印W和b这些参数
W, b = model.layers[0].get_weights()
print('Weights=', W, '\nbiases=', b)

# 打印测试值和预测值
Y_pred = model.predict(X_test)
# 使用散点图绘制测试值
plt.scatter(X_test, Y_test)
# 使用直线图绘制预测值
plt.plot(X_test, Y_pred)
plt.show()

结果:

/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/keras_day02/regressor.py
Using Theano backend.
('train cost: ', array(4.190890312194824, dtype=float32))
('train cost: ', array(0.10415506362915039, dtype=float32))
('train cost: ', array(0.011512807570397854, dtype=float32))
('train cost: ', array(0.004584408365190029, dtype=float32))

40/40 [==============================] - 0s 5us/step
('test cost:', 0.0053740302100777626)
('Weights=', array([[ 0.56634265]], dtype=float32), '\nbiases=', array([ 2.00106311], dtype=float32))

Process finished with exit code 0

莫烦keras学习自修第三天【回归问题】的更多相关文章

  1. 莫烦keras学习自修第五天【CNN卷积神经网络】

    1.代码实战 #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ import numpy as np np.random.seed(1337) # for r ...

  2. 莫烦keras学习自修第四天【分类问题】

    1.代码实战 #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ # 导入numpy import numpy as np np.random.seed(133 ...

  3. 莫烦keras学习自修第二天【backend配置】

    keras的backend包括tensorflow和theano,tensorflow只能在macos和linux上运行,theano可以在windows,macos及linux上运行 1. 使用配置 ...

  4. 莫烦keras学习自修第一天【keras的安装】

    1. 安装步骤 (1)确保已经安装了python2或者python3 (2)安装numpy,python2使用pip2 install numpy, python3则使用pip3 install nu ...

  5. 莫烦scikit-learn学习自修第三天【通用训练模型】

    1. 代码实战 #!/usr/bin/env python #!_*_ coding:UTF-8 _*_ import numpy as np from sklearn import datasets ...

  6. 莫烦theano学习自修第三天【共享变量】

    1. 代码实现 #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ import numpy as np import theano.tensor as T i ...

  7. 莫烦scikit-learn学习自修第四天【内置训练数据集】

    1. 代码实战 #!/usr/bin/env python #!_*_ coding:UTF-8 _*_ from sklearn import datasets from sklearn.linea ...

  8. 莫烦scikit-learn学习自修第一天【scikit-learn安装】

    1. 机器学习的分类 (1)有监督学习(包括分类和回归) (2)无监督学习(包括聚类) (3)强化学习 2. 安装 (1)安装python (2)安装numpy >=1.6.1 (3)安装sci ...

  9. 莫烦theano学习自修第九天【过拟合问题与正规化】

    如下图所示(回归的过拟合问题):如果机器学习得到的回归为下图中的直线则是比较好的结果,但是如果进一步控制减少误差,导致机器学习到了下图中的曲线,则100%正确的学习了训练数据,看似较好,但是如果换成另 ...

随机推荐

  1. Apache 项目列表功能分类便于技术选型

    big-data (49):  Apache Accumulo  Apache Airavata  Apache Ambari  Apache Apex  Apache Avro  Apache Be ...

  2. jquery懒加载插件 jquery_lazyload 下载

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code https://pan.baidu.com/s/1UbOeyL_AaSNN_KMA4M ...

  3. jenkins使用5----gi服务器搭建连接

    ♦安装git ♦服务器创建git用户 [root@localhost home]# id git id: git:无此用户 [root@localhost home]# useradd git [ro ...

  4. nginx之七:nginx path(root)文件路径配置

    nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了如下,方便大家在应用过程中,快速响应.root和alias主要区别在于如何解释location后面的uri,这会使 ...

  5. Spring Security(十三):5.2 HttpSecurity

    Thus far our WebSecurityConfig only contains information about how to authenticate our users. How do ...

  6. 移走mysql data目录,及常见mysql启动问题

    一般mysql安装在/usr/local/下,现以将/usr/local/mysql/data目录移动到/home/mysql下为例 首先保证/home/mysql目录是存在的,本例中使用了mysql ...

  7. springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback

    springboot打包时,去掉资源文件 <build> <resources> <resource> <directory>src/main/reso ...

  8. redis学习(三)——List数据类型

    一.概述      在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,R ...

  9. 深入浅出Tomcat/2 - Tomcat启动和停止

    Tomcat启动和停止 很明显,我们启动或停止Tomcat,一般调用的是bin下的startup.sh或shutdown.sh(以Linux为例,以下涉及到平台,若无特殊说明,一般都指Linux).我 ...

  10. NLP基础——词集模型(SOW)和词袋模型(BOW)

    (1)词集模型(Set Of Words): 单词构成的集合,集合自然每个元素都只有一个,也即词集中的每个单词都只有一个. (2)词袋模型(Bag Of Words): 如果一个单词在文档中出现不止一 ...