人工智能学习——第六课:Tensorflow学习——多层感知器代码
一、模型定义
目的:多个特征值预测收入分布情况;
# 导入python模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline # data导入表信息 data = pd.read_csv('D:\\workspaces\\Miniconda_workSpaces\\datasheets\\income.csv',encoding='gbk')
# 输出表
data

# data输出(education和income的关系)
plt.scatter(data.education,data.income)

定义特征值(x轴和y轴):
x轴:取所有行(:),除去第一列和第二列 x = data.iloc[:, 1:2] y轴:取所有行(:),取最后一列 y = data.iloc[:, -1]
定义多层感知器(建立模型)
# tf.keras.layers.Dense参数详解
# 代码:
model = tf.keras.Sequential([tf.keras.layers.Dense(10, input_shape=(2,), activation='relu'), tf.keras.layers.Dense(1)] )

# 定义10个单元的隐含层(自由选择(10-100)参数越大拟合能力越强,会存在一些缺点,后续补充)
10层
# 第一层输入层:
# 对应数据x轴参数technology、education
# tf.keras.layers.Dense作用是初始化将input_shape=(2,)即CX1+DX1输入的参数相加,通特征值相乘,得出结果;
# input_shape=(2,)用原子的形式将输入数据形状告诉模型,长度为2维的数据;
# activation='relu'中间层添加激活函数,增加拟合能力;
# 第二层输出层:
# tf.keras.layers.Dense(1)输出维度1的数据;
# 对应数据y轴参数income
# 模型输出
# 代码:
model.summary()
# 从单层神经元定义为多层感知器
# 中间层dense(Dense)
包含10个隐藏单元Output Shape(None, 10)
有30个参数Param:30,(2个输入+1个偏置)*(10个隐含层)=3*10=30个参数
# 输入层2输入值、2个权重值、1个偏置
x表示输入列technology、education
b表示偏置
x1*w1、X2*W2、1*b
# 输出层dense_1(Dense)
11个参数Param:11


定义损失函数
# 定义优化器和损失函数

# 指定代码
model.compile(optimizer='adam', loss='mse')
# 优化器参数
optimizer='adam'
# 损失函数(输出值为固定值,使用均方差函数)
loss='mse'
开始训练模型
# 训练模型代码
model.fit(x, y, epochs=300)
# 参数x:上面定义x轴为表参数education
# 参数y:上面定义y轴位表参数income
# epochs:定义训练次数300

# 预测值:通过模型函数model.predict(test)取前10行第三列的特征值education的数据,预测第四列income的值

# 实际值:打印实际值与上面预测值比较
# 执行代码
test = data.iloc[:10, -1]
# :10, -1 打印10行income列的实际值

稳步前行,只争朝夕。
浙公网安备 33010602011771号