使用 tensorflow.keras 进行线性回归
1. 加载数据
data = pd.read_csv('./dataset/income.csv')
x_data = data.age
y_data = data.income
2. 可视化数据
plt.scatter(x_data,y_data)
plt.ion
plt.show
3. 创建模型
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(1,input_shape=(1,),activation='LeakyReLU'))
model.summary()
model.complie(
optimizer = 'adma',
loss = 'mse'
)
4. 开始训练
history = model.fit(x_data,y_data,epochs=50000)
5. 使用训练好的模型进行预测
model.predict(x_data)
6. 完整源代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
data = pd.read_csv('./dataset/income.csv')
x_data = data.age
y_data = data.income
plt.scatter(x_data,y_data)
plt.ion
plt.show
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(1,input_shape=(1,),activation='LeakyReLU'))
model.summary()
model.complie(
optimizer = 'adma',
loss = 'mse'
)
history = model.fit(x_data,y_data,epochs=50000)
model.predict(x_data)
附录
tf.keras.layers.Dense(
units,
activation=None,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None, **kwargs
)
model.compile()的作用: 设置优化器 , 损失函数 , 准确率评测标准 model.compile() 语法: 形式1
model.compile(optimizer = tf.keras.optimizers.优化器(参数),
loss = tf.keras.losses.损失函数(参数),
metrics = ["sparse_accuracy"]
)
形式2
model.compile(optimizer = "sgd",
loss = "mse",
metrics = ["sparse_accuracy"]
)
optimizer 有四种,每种有两种表现形式:
“sgd” 或者 tf.optimizers.SGD(lr = 学习率, decay = 学习率衰减率,momentum = 动量参数)
“adagrad" 或者 tf.keras.optimizers.Adagrad(lr = 学习率, decay = 学习率衰减率)
”adadelta" 或者 tf.keras.optimizers.Adadelta(lr = 学习率,decay = 学习率衰减率)
“adam" 或者 tf.keras.optimizers.Adam(lr = 学习率, decay = 学习率衰减率)
loss 有两种,每种有两种表现形式:
”mse" 或者 tf.keras.losses.MeanSquaredError()
"sparse_categorical_crossentropy" 或tf.keras.losses.SparseCatagoricalCrossentropy(from_logits = False)
Metrics 标注网络评价指标,例如:
"accuracy" : y_ture 和 y_pred 都是数值,如y_ = [1] y = [1] #y_为真实值,y为预测值
“sparse_accuracy" :y_和y都是以独热码 和 概率分布表示,如y_ture = [0, 1, 0], y_pred = [0.256, 0.695, 0.048]
"sparse_categorical_accuracy" :检查 y_true 中的值(本身就是index) 与 y_pred 中最大值对应的index是否相等。 y_true是以数值形式给出, y_pred是以独热码给出,如y_ = [1], y = [0.256 0.695, 0.048]
|