Keras_简单线性回归

代码解析

导入包

import numpy as np
import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential
from sklearn.model_selection import train_test_split

随机创建数据

x = np.array([50,30,15,40,55,20,45,10,60,25])
y = np.array([5.9,4.6,2.7,4.8,6.5,3.6,5.1,2.0,6.3,3.8])

数据划分

使用train_test_split划分数据
test_size:划分出来的测试集占总数据集的比例
shuffle:是否在划分前将数据顺序打乱
random_state:shuffle的随机种子

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,shuffle=True,random_state=23)

搭建网络

模型选用Sequential
tf.keras.layers.Dense进行全连接操作
input_dim向量的维度,如果是第一个全连接层,需要设置输入层的大小
units全连接层神经元个数
activation激活函数,如果不设置,就表示不使用激活函数
name

model = Sequential()
model.add(Dense(input_dim=1,units=1,name='dense'))

设置模型

tf.keras.Sequential.compile进行模型设置
loss损失函数
optimizer优化器

model.compile(loss='mse',optimizer=tf.keras.optimizers.SGD(learning_rate=1e-5))

训练模型

tf.keras.Sequential.fit进行模型设置
batch_size单次更新大小
epochs训练次数
validation_split验证集占训练集的比例
可以返回一个History对象,记录每一轮训练集和验证集的损失函数值和评价指标

history = model.fit(x=x_train,y=y_train,batch_size=2,epochs=100,validation_split=0.2)

验证模型

tf.keras.Sequential.evaluate进行模型设置

loss = model.evaluate(x=x_test,y=y_test)

预测模型

tf.keras.Sequential.predict进行模型设置

y_test_pred = model.predict(x=x_test)

整体代码

import numpy as np
import pandans as pd
import matplotlib as plt
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential
from sklearn.model_selection import train_test_split

x = np.array[50,30,15,40,55,20,45,10,60,25]
y = np.array[5.9,4.6,2.7,4.8,6.5,3.6,5.1,2.0,6.3,3.8]

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,shuffle=True,random_state=23)

model = Sequential()
model.add(Dense(input_dim=1,units=1,name='dense'))

model.compile(loss='mse',optimizer=tf.keras.optimizers.SGD(learning_rate=1e-5))

history = model.fit(x=x_train,y=y_train,batch_size=2,epochs=100,validation_split=0.2)

loss = model.evaluate(x=x_test,y=y_test)

y_test_pred = model.predict(x=x_test)

可视化管理

画散点图

#画散点图
plt.scatter(x,y)
#显示网格
plt.grid('')
#给横坐标命名
plt.xlabel('area')
#给纵坐标命名
plt.ylabel('price')
#输出图片
plt.show()

查看模型输出

#在设置模型结束后,查看模型输出
model.summary()

查看loss的变化趋势

#在训练模型结束后,查看loss的变化趋势
pd.DataFrame(history.history).plot()
plt.xlabel('epoch')
plt.show()

查看损失值

#在验证模型结束后,查看损失值
print(loss)

查看预测值

#在预测模型结束后,查看预测值
print(y_test_pred)

将训练集、测试集、预测函数画在一起

plt.scatter(x_test,y_test,color='g',label='test')
plt.scatter(x_train,y_train,color='b',label='train')
plt.plot(x_test,y_test_pred,color='r',label='predict')
plt.legend()
plt.show()

查看任意预测值

#在预测模型结束后,查看预测值
model.predict(np.array([35]))

查看模型参数

#在预测模型结束后,查看预测值
model.layers[0].get_weights()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值