人工智能学习——第六课: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列的实际值

 

 

posted on 2025-05-30 18:09  gkhost  阅读(15)  评论(0)    收藏  举报

导航