kera 学习-线性回归

园子里头看到了一些最基础的 keras 入门指导, 用一层网络,可以训练一个简单的线性回归模型。

自己学习了一下,按照教程走下来,结果不尽如人意,下面是具体的过程。

第一步: 生成随机数据,绘出散点图

import numpy as np
from keras.models  import Sequential
from keras.layers import Dense
import matplotlib.pyplot as plt

# 生产随机数据
np.random.seed(123) # 指定种子,使得每次生成的随机数保持一致
x = np.linspace(-1,1,200) # 生成一个长度为 200 的 list,数值大小在 [-1,1] 之间
np.random.shuffle(x) #随机排列传入 list
y = 0.5 * x + 2 + np.random.normal(0, 0.05, (200,)) # 添加正态分布的偏差值
#测试数据 与 训练数据x_train, y_train = x[:160], y[:160]x_test, y_test = x[160:], y[160:0]
#绘出散点图: plt.scatter(x,y) plt.show()

散点图如下:

二、创建网络模型

# 创建模型
model = Sequential()
# 添加全连接层,输入维度 1, 输出维度 1
model.add(Dense(output_dim = 1, input_dim= 1))

三、模型编译

# 模型编译
# 损失函数:二次方的误差, 优化器:随机梯度随机梯度下降,stochastic gradient descent
model.compile(loss=‘mse‘, optimizer=‘sgd‘)  

四、模型训练

# 训练模型,就跑一次

print(‘start train model:‘)
for step in range(300):
    cost = model.train_on_batch(x_train, y_train)
    if step % 50 == 0:
        print(‘cost:‘, cost)

五、测试模型

#看测试数据损失又多少
print(‘start test:‘)
cost = model.evaluate(x_test, y_test, batch_size=40)
print(‘the loss is:‘, cost)

# 查看函数参数
w,b = model.layers[0].get_weights()
print(‘weights =‘,w, ‘  biases = ‘, b)

# 用模型预测测试值
y_pred = model.predict(x_test)

# 画出测试散点图
plt.scatter(x_test, y_test)
# 画出回归线
plt.plot(x_test, y_pred)
plt.show()

输出结果:

此次训练所得模型:

从图中可以看出,模型没有很好的满足我们的需求,进行调整,看下结果:

减小batch_size, 增加训练次数。

batch_size: 单一批训练样本数量

epochs : 将全部样本训练都跑一遍为 1 个 epoch,  10 个 epochs 就是全部样本都训练 10 次

# 调整模型训练过程
model.fit(x_train, y_train, batch_size=5,epochs=60)

最终所得模型图为:

曲线为:

原文地址:https://www.cnblogs.com/yaolin1228/p/9292193.html

时间: 2024-10-19 14:07:44

kera 学习-线性回归的相关文章

用scikit-learn和pandas学习线性回归

对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了. 1. 获取数据,定义问题 没有数据,当然没法研究机器学习啦.:) 这里我们用UCI大学公开的机器学习数据来跑线性回归. 数据的介绍在这: http://archive.ics.uci.edu/ml/datasets/Combined+Cycle+Power+Plant 数据的下载地址在这: http://archive.ics.uci.edu/ml/ma

scikit-learn学习线性回归

利用UCI大学公开的机器学习数据来跑线性回归,数据集是一个循环发电场的数据,共有9568个样本数据,每个数据有5列,分别是:AT(温度), V(压力), AP(湿度), RH(压强), PE(输出电力).我们的目标是得到一个线性关系,其中AT/V/AP/RH这4个是样本特征,PE是样本输出, 也就是说机器学习的结果是得到一个线性回归模型: \[PE=\theta _{0}+\theta _{1}*AT+\theta _{2}*V+\theta _{3}*AP+\theta _{4}*RH\] 1

使用 Numpy 手动实现深度学习 -- 线性回归

概述 以房价预测为例,使用numpy实现深度学习网络--线性回归代码.数据链接:https://pan.baidu.com/s/1pY5gc3g8p-IK3AutjSUUMA 提取码:l3oo 导入库 import numpy as np import matplotlib.pyplot as plt 加载数据 def LoadData(): #读取数据 data = np.fromfile( './housing.data', sep=' ' ) #变换数据形状 feature_names =

scikit-learn 线性回归算法库小结

scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的不同和各自的使用场景. 线性回归的目的是要得到输出向量YY和输入特征XX之间的线性关系,求出线性回归系数θθ,也就是 Y=XθY=Xθ.其中YY的维度为mx1,XX的维度为mxn,而θθ的维度为nx1.m代表样本个数,n代表样本特征的维度. 为了得到线性回归系数θθ,我们需要定义一个损失函数,一个极小化损失函数的优化方法,以及一个验证算法的方法.

数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归

     [python] view plain copy print? # coding: utf-8 # 利用 diabetes数据集来学习线性回归 # diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况. # 数据集中的特征值总共10项, 如下: # 年龄 # 性别 #体质指数 #血压 #s1,s2,s3,s4,s4,s6  (六种血清的化验数据) #但请注意,以上的数据是经过特殊处理, 10个数据中的每个都做了均值中心化处理,然后又用

机器学习第一课

由于最近在学习standford大学 Andrew Ng 大牛的机器学习视频,所以想对所学的方法做一个总结,后面所要讲到的算法主要是视频里面学到的机器学习领域常用的算法.在文中我们所要学的的算法主要有Linear Regression(线性回归),gradient descent(梯度下降法),normal equations(正规方程组),Locally weighted linear regression(局部加权线性回归).由于开始研究mechine learning 的知识,所以之前的J

机器挖掘之经典算法

在机器学习中,有一种叫做「没有免费的午餐」的定理.简而言之,它指出没有任何一种算法对所有问题都有效,在监督学习(即预测建模)中尤其如此. 例如,你不能说神经网络总是比决策树好,反之亦然.有很多因素在起作用,例如数据集的大小和结构. 因此,你应该针对具体问题尝试多种不同算法,并留出一个数据「测试集」来评估性能.选出优胜者. 当然,你尝试的算法必须适合你的问题,也就是选择正确的机器学习任务.打个比方,如果你需要打扫房子,你可能会用吸尘器.扫帚或拖把,但是你不会拿出铲子开始挖土. 大原则 不过也有一个

我与西瓜书2----线性模型

上一章,讲了基本概念和关于模型选择与评估的概念.这一张学习线性回归,并根据线性回归加上模型选择与评估的知识来实例化. 1.线性回归(LinearRegression)(又名最小二乘法,ordinary least squares OLS)最小二乘法的具体数学原理这里就不再赘述了,另外需要讲的一点是线性回归没有参数,这是一个优点,但也因此无法控制模型的复杂度. 具体实现过程:先分类:In scikit-learn a random split into training and test sets

机器学习必学10大算法

1. 线性回归 在统计学和机器学习领域,线性回归可能是最广为人知也最易理解的算法之一. 预测建模主要关注的是在牺牲可解释性的情况下,尽可能最小化模型误差或做出最准确的预测.我们将借鉴.重用来自许多其它领域的算法(包括统计学)来实现这些目标. 线性回归模型被表示为一个方程式,它为输入变量找到特定的权重(即系数 B),进而描述一条最佳拟合了输入变量(x)和输出变量(y)之间关系的直线. 线性回归 例如: y = B0 + B1 * x 我们将在给定输入值 x 的条件下预测 y,线性回归学习算法的目的