tensorflow学习008——逻辑回归实现

2.7 逻辑回归实现

本节代码需要的文件链接:https://pan.baidu.com/s/1jhHHi9bxrV5ogH7mKTc8Bw
提取码:1zhs

先认识下数据

点击查看代码
import pandas as pd
data = pd.read_csv("./dataset/credit-a.csv",header=None) #因为这个文件没有表头
print(data.head())

image
图2-15
其中0-14列是输入特征值,第15列是目标值,第15列只有-1和1这两种值。

点击查看代码
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv("./dataset/credit-a.csv",header=None) #因为这个文件没有表头
# print(data.head())
x = data.iloc[:,:-1]
y = data.iloc[:,-1].replace(-1,0) #将最后一列的-1替换成0

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(4,input_shape=(15,),activation='relu'))
model.add(tf.keras.layers.Dense(4,activation='relu')) #从第二层开始就不需要告诉输入的形状,会自动推断
model.add(tf.keras.layers.Dense(1,activation='sigmoid')) #最后一层需要使用sigmoid激活
#损失函数使用二元交叉熵概率 metric每轮都显示正确率
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['acc'])

history = model.fit(x,y,epochs=1000)

print(history.history) #是一个字典,记录了acc和loss的变化
#绘制loss,acc随ecpoch变化的图像
plt.plot(history.epoch,history.history.get("loss"),color='red')
plt.plot(history.epoch,history.history.get("acc"),color='green')
plt.show()

image
图2-16
如图2-16,我们可以看出,当超过200轮的时候,训练的结果冰花不是很大的,这说明,对于我们设计的这个网络而言,单纯的增大轮数没有意义,需要对网络结构进行调整。


作者:孙建钊
出处:http://www.cnblogs.com/sunjianzhao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/sunjianzhao/p/15552277.html