开发者学堂课程【Tensorflow2.0入门与实战:逻辑回归的tensorflow实现】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/664/detail/11104
逻辑回归的tensorflow实现
使用 pandas 读取数据集
1、引入tensorflow 、pandas、numpy、matplotlib
将 credit 数据集读取使用 pandas
credit,data head 显示数据,head 显示前五行,数据无表头需要添加一个参数 header=None。15列特征,目标值是第15列。
选取15列,使用 value_counts
In : data.iloc[:,-1].value_counts()
Out:1 357
-1 296
Name:15,dtype:int64
标志为1的有357个数据,标志为-1有296个数据。
提取x,y的数据,x为前十四列,y为最后一列
x= data.iloc[:,:-1]
y=data.iloc[:,-1].replace(-1, 0)
最后一列正面数据为1,负面数据-1,将负面数据替换成0。
2、建立顺序模型
model =tf.keras.Sequential()
3、添加层
第一层有多少隐藏单元数是自己设计的,第一层要有 input_shape 的形状,数据的形状为15,使用 relu 激活。
第二层开始不需要添加 input_shape,会自己推断,使用 relu 激活。输出层输出值为1逻辑回归最后用 sigmoid 激活,sigmoid 映射出一个从0到1的概率值。
model.add(tf.keras.layers.Dense(4,input_shape=(15,),activation='relu’))
model.add(tf.keras.layersDense(4,activation='relu’))
model.add(tf.keras.layers.Dense(1,activation='sigmoid’))
4、model summary
第一层 Dense,第二层 Dense,第三层 Dense 输出层输出维度为1。
5、model.compile 编译
规定 optimizer,optimizer=adam。规定 loss 当使用概率时使用交叉熵,二元概率用 binary_crossentropy 计算交叉熵,metrics在运行过程中会计算正确率情况,metric 可测量binary loss、交叉熵的损失值、正确率
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['acc']
6、history model训练
数据x,y训练100个 epochs,loss 的值随着训练不断下降。随着训练的进行,正确率不断提升。
history=model.fit(x,y,epochs=100
Epoch 1/100
653/653[==============================]-0s222us/sa
ple-l
oss:283.7279-acc:0.5467
Epoch 2/100
653/653[==============================]-0s29us/sampl
e-l
oss:257.2484-acc:0.5467
Epoch 3/100
653/653[==============================]-0s33us/sampl
e-lo
ss:233.0358-acc:0.5467
训练过程收集进 history 里,history 里有一个参数 history.history,history.history 是一种字典,它的 keys 记录了 loss 和 acc 的变化。
可以将 loss 和 acc 的变化取出绘图。
plt.plot 用 history.history get 方法取出 loss 值。x轴是训练的 epochs,y 轴是 loss。
运行了45个 epochs 后 loss 不再下降,后面的训练步骤没有任何意义。
acc 的值
刚开始有下降的过程然后上升,到100 epochs 任然有些上升但上升的趋势不明显。