Keras Regressor回归(一)

导入所需要的包:

import numpy as np 
from keras.models import Sequential #按顺序建立 的神经网络 (一层一层按顺序建立)
from keras.layers import Dense # Dense 全连接层
import matplotlib.pyplot as plt # 可视化的模块

制作数据:

np.random.seed(123) #x -- 改变随机数生成器的种子seed , 123是随意的
#创建源数据
X=np.linspace(-1,1,200) #生成 200个  在 [-1,1] 相等间距的 数据 
np.random.shuffle(X) # 用于将一个列表中的元素打乱
#公式 证明 y=0.5*x+2
Y=0.5*X +2 +np.random.normal(0,0.05,(200,))  # 正态分布


画点:

#plot data:
#画散点图 
plt.scatter(X,Y)
plt.show()

Keras Regressor回归(一)_第1张图片


测试数据和训练数据:

X_train,Y_train=X[:160],Y[:160] #160个数据 点
X_test,Y_test=X[160:],Y[160:] #剩余 的40个 点

分割线------------------------------------------


建模:

#------------- 建立 模型
model=Sequential() 

#----------为模型新增层
model.add(Dense(output_dim=10,input_dim=1)) #input_dim 输入层为 1 长度 ,output_dim=1 长度
model.add(Dense(output_dim=1))  #层于层 之间 (输入会用上一层的输出),所以不用定义

#----------搭建模型
model.compile(loss='mse',optimizer='sgd') #mse:二次方的误差  ,sgd:随机梯度


训练:

print('训练~~~~')
for step in range(301):
    cost=model.train_on_batch(X_train,Y_train) #获取一批数据 放到内存中 训练
    if step %100==0:
        print('熵差:',cost)

测试:

# 如果 只有 一层,W,b 无限接近 公式0.5和2
print('测试~~~')
cost=model.evaluate(X_test,Y_test,batch_size=40) #评价一下
print('测试的熵差:',cost)
W1,b1=model.layers[0].get_weights() #获取 第一层 的 W,b
print('Weights=',W1,'\n biases=',b1) 
W2,b2=model.layers[1].get_weights() #获取 第二层 的 W,b
print('Weights=',W2,'\n biases=',b2) 

预测结果:

Y_pred=model.predict(X_test)

#画出 测试数据 的 散点
plt.scatter(X_test,Y_test)
#画出 预测线
plt.plot(X_test,Y_pred)
plt.show()
Keras Regressor回归(一)_第2张图片



你可能感兴趣的:(python,keras)