目录
一、一维变量线性回归
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])