Keras入门:一维线性回归问题

目录

一、一维变量线性回归

1. 数据生成

2. 建立训练模型

3. 作图

4. 完整代码


一、一维变量线性回归

1. 数据生成

import keras
import numpy as np
import matplotlib.pyplot as plt
#matplotlib inline
x=np.linspace(0, 100, 30) #0~100之间,生成30个数
y=3*x +7 + np.random.randn(30) #30个服从正态分布的随机数
plt.scatter(x, y)

将数扩大,分布更随机:

y=3*x +7 + np.random.randn(30)*10

2. 建立训练模型

model = keras.Sequential() #Sequential->创建顺序模型实例(输入->输出)
from keras import layers #layers里面有dense层
model.add(layers.Dense(1, input_dim=1))#给模型添加层(单输入,单输出的全链接层)
model.summary()#打印模型的相关参数

输出如下:

Model: "sequential_2"

_________________________________________________________________

Layer (type)                 Output Shape              Param #   

=================================================================

dense_2 (Dense)              (None, 1)                 2         

=================================================================

Total params: 2

Trainable params: 2

Non-trainable params: 0

_________________________________________________________________

#编译模型(定义优化算法和优化的目标)
model.compile( optimizer='adam', loss='mse'  #定义损失函数为:最小化均方误差准则)


#训练模型
model.fit(x,y,epochs=3000)
......#开始计算,训练

#检验模型
model.predict(x)

......

3. 作图

plt.scatter(x, y, c='r') #原数据

plt.plot(x, model.predict(x))


4. 使用模型(数据预测)

model.predict([150])

4. 完整代码

Linear_01.py

import keras
import numpy as np
import matplotlib.pyplot as plt
#matplotlib inline
x = np.linspace(0, 100, 30)
y = 3*x + 7 + np.random.randn(30)*6
model = keras.Sequential()   #顺序模型
from keras import layers
model.add(layers.Dense(1, input_dim=1))
model.summary()
model.compile(optimizer='adam', loss='mse')
model.fit(x, y, epochs=3000)
model.predict(x)
plt.scatter(x, y, c='r')
plt.plot(x, model.predict(x))
model.predict([150])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值